【发布时间】:2019-04-16 23:25:14
【问题描述】:
我有以下数据:
code desc amt month
----- ---------- ----- ------
aa item aa 12 4/2019
aa item aa 7 5/2019
bb item bb 5 4/2019
bb item bb 35 5/2019
bc widget bc 109 3/2019
bc widget bc 100 4/2019
df widget df 29 5/2019
我想旋转这些数据,使其看起来像这样:
code desc 3/2019 4/2019 5/2019
----- ---------- -------- -------- --------
aa item aa 0 12 7
bb item bb 0 5 35
bc widget bc 109 100 0
df widget df 0 0 29
我看到的所有数据透视示例都包含聚合函数,但是,我不想聚合,我只需要组合/转置数据。我该怎么做?
【问题讨论】:
-
如果每个月都有唯一的行,您可以使用 MIN 或 MAX 进行伪聚合
-
@Vasya 我认为在这种情况下它们不会是唯一的,因为该列是“金额”。
-
不,它们是每个“项目”和“月”的唯一记录。例如,代码“aa”只有一个“4/2019”行。
-
除非您提前确切知道您要经过哪几个月,否则您可以查看此提示以了解有关构建动态数据透视查询的一些想法:mssqltips.com/sqlservertip/2783/…
-
所以,我浏览了这些建议并意识到我还需要输出列,我想出了这个:dbfiddle.uk/… 不是最优雅的解决方案,但是,它有效!谢谢大家!
标签: sql-server tsql pivot