我正在尝试按年将日期列拆分为多个列。如果我能在最后得到一个很棒的汇总小计。
我认为最好的方法是使用.NET datalist控件,但我愿意接受建议。
示例数据:
DATE | SALES
1/1/2009 | 1234.56
2/1/2009 | 4567.89
3/1/2009 | 7890.12
...
1/1/2010 | 3456.78
...
1/1/2011 | 8901.23
期望的输出:
2009 2010 2011
Jan 1234.56 3456.78 8901.23
Feb 4567.89 ...
提前致谢!
答案 0 :(得分:3)
为什么不将它作为数据透视表进行查询,然后使用您认为最简单,最适合的任何前端显示它。
答案 1 :(得分:2)
你没有提到你的后端,但正如其他人提到的那样,PIVOT语法适用于当前版本的SQL和ORACLE。如果您的后端不支持,您也可以使用SUM/CASE
e.g。
SELECT MONTH([date]) AS mo,
SUM(CASE
WHEN YEAR([date]) = YEAR(Dateadd(YEAR, -2, Getdate())) THEN score
ELSE 0
END) AS y1,
SUM(CASE
WHEN YEAR([date]) = YEAR(Dateadd(YEAR, -1, Getdate())) THEN score
ELSE 0
END) AS y2,
SUM(CASE
WHEN YEAR([date]) = YEAR(Getdate()) THEN score
ELSE 0
END) AS y3
FROM tablenamehere
WHERE (vendor = 'vendornamehere')
GROUP BY MONTH([date])
另一个选择是在C#代码中use Linq来转移数据。如果您已经将数据存储在内存中并且不想再次返回数据库,则此功能特别有用。
找到一个例子(使用Jon Skeets评分而不是销售)