我在C#方面经验丰富,但仍然主要是SQL的初学者 我们在C#中有一个使用MSSQL数据库的应用程序 我们的应用程序的一部分只是一个预先编写的查询列表,作为应用程序通过简单地运行查询并将返回的表粘贴到gridView中而显示的报告。 用户正在请求一个新的报告,我甚至不能确定只使用SQL,并且需要操纵返回的数据才能让它看起来正确。
用户想要的数据,以他们想要的方式呈现,需要我能够拿下这张表:
Date Category Count --------------------- date1 Cat1 x1 date1 Cat2 y1 ... date1 CatN z1
从这个查询获得:
select Date, Category, COUNT(*) as 'Count'
from Table
group by Date, Category
变成了这张表:
Date Cat1 Cat2 ... CatN --------------------------- date1 x1 y1 ... z1 date2 x2 y2 ... z2
这样我就可以按日期将它加入到他们想要的另一半数据中。
啰嗦的解释,简短的问题和跟进:只要有SQL,这是否可以做到,无论多么痛苦? 如果是这样,怎么样?
答案 0 :(得分:1)
您需要使用pivot
。可能会给您带来问题的一个问题是您必须知道您有多少类别,因为查询无法返回动态数量的列(甚至不是您正在转动的列)。
我没有你的架构,但这应该是正确的(可能会在这里和那里进行一些修改,但它应该让你开始)......
select
Date, [1] as Cat1, [2] as Cat2, [3] as Cat3, ...
from
(select date, category from table) p
pivot (
count(*)
for
Category in ([1],[2],[3],...)
) pivoted
order by
pivoted.date
答案 1 :(得分:0)
您需要查看PIVOT操作: