【发布时间】:2010-07-07 23:04:14
【问题描述】:
我想知道其他人如何处理这种情况......以及如何将不要重复自己 (DRY) 原则应用于这种情况。
我发现自己经常 PIVOTing 或在 T-SQL 中编写 CASE 语句以将月份表示为列。我通常有一些字段,其中包括 (1) 日期字段和 (2) 值字段。当我通过 ASPX 页面或 Reporting Services 将其呈现给用户时,我需要拥有最后最右边的 14 列才能具有这种模式:
[年],[一月],[二月],[三月],[四月],[五月],[六月],[七月],[八月],[九月],[十月],[十一月] ,[十二月],[总计]
year 是 int 的年份 并且每个其他字段都是该月的总和值字段([Total] 除外,它是一年的总值字段)。
我想找到一种可重复使用的方法来处理这个问题。对所有建议开放 (T-SQL / ANSI SQL)
【问题讨论】:
-
DRY 代表不要重复自己,不要重复
-
哈哈。不错的收获。那是一个错字。
-
我很想尝试一下 Microsoft SQL 2005 中的 XML 数据类型。这样我也许可以使用标量函数来完成一些工作。
-
“不要重复自己”的意思是“构建可重用的抽象”。 SQL 和 Assembly 一样,不是最好的抽象语言。
-
我同意。但我认为这也意味着“富有成效”……我厌倦了一遍又一遍地写这些“枢轴”。我认为 Cade Roux 让我走上了正确的道路(请参阅他的回答 cmets)。我在 T-SQL 中尽我所能进行抽象,这通常会引导您进入函数。
标签: sql sql-server tsql dry pivot