我环顾四周,但我没有发现任何完全相同的内容,所以我认为每个人都可能会有所帮助。长话短说,我有一个列有一年,后面是包含数字的月份列:
[year] | [month1] | [month2]
1999 4 2
基本上,我想把这个月打开,所以我可以将它命名为“March”或“03”之类的正常名称,同时将年份保持在左侧,将数字保持在右侧:
[year] | [month] | [numbers]
1999 month1 4
1999 month2 2
最后,我想把它带到Report Builder中,但我会留待以后再说。这是我正在使用的数据的副本。
我真的希望这是描述性的,因为这已经困扰了我几天。
CSYEAR CSOR01 CSOR02 CSOR03 CSOR04 CSOR05 CSOR06 CSOR07 CSOR08 CSOR09 CSOR10 CSOR11 CSOR12
1999 2 0 0 0 1 2 0 3 1 4 0 3
2000 4 1 3 3 2 2 2 2 4 1 4 4
1999 CSOR01 2
1999 CSOR02 0
1999 CSOR03 0
1999 CSOR04 0
1999 CSOR05 1
1999 CSOR06 2
1999 CSOR07 0
1999 CSOR08 3
1999 CSOR09 1
1999 CSOR10 4
1999 CSOR11 0
1999 CSOR12 3
2000 CSOR01 4
2000 CSOR02 1
2000 CSOR03 3
2000 CSOR04 3
2000 CSOR05 2
2000 CSOR06 2
2000 CSOR07 2
2000 CSOR08 2
2000 CSOR09 4
2000 CSOR10 1
2000 CSOR11 4
2000 CSOR12 4
谢谢大家的建议。
答案 0 :(得分:3)
SELECT CSYEAR, MONTH, NUMBER
FROM myTable
UNPIVOT
(
NUMBER
for MONTH in (CSOR01, CSOR02, CSOR03, CSOR04, CSOR05, CSOR06, CSOR07, CSOR08, CSOR09, CSOR10, CSOR11, CSOR12)
) u;
SQLFiddle here
答案 1 :(得分:0)
我没有足够高的声誉评分来评论@PinnyM的优秀答案,但如果您正在寻找月份的名称,您可以修改它以执行以下操作:
SELECT
CSYEAR,
MONTH,
DATENAME(Month, CAST(RIGHT(MONTH,2) AS VARCHAR(2)) + '/01/1900'),
NUMBER
FROM myTable
UNPIVOT
(
NUMBER
for MONTH in (CSOR01, CSOR02, CSOR03, CSOR04, CSOR05, CSOR06, CSOR07, CSOR08, CSOR09, CSOR10, CSOR11, CSOR12)
) u;