这是我的表格似乎
country ID weekyear W1 W2 W3
------------------------------------------------------------
aa 1000 322015 0.00 4.50 0.00
bb 2000 262015 26.85 5.78 1.23
cc 3000 312015 0.94 0.00 2.90
dd 4000 362015 34.3 4.98 45.00
我必须忽略上表,但这里的挑战是例如:
对于ID = 1000
,WEEKYEAR
表示322015
,即2015年的第32周。W1
下的下一个值表示第33周和下一周W2
下的值表示WEEK 34等等。
同样对于ID = 2000
,WEEKYEAR
表示2015年第26周。因此W1
下的下一个值表示第27周,W2
下的下一个值是第28周。
请帮助解开表格,表格看起来完全相同/
答案 0 :(得分:0)
您可以使用CROSS APPLY
取消对表格的删除:
SELECT
t.country,
t.ID,
x.WeekYear,
x.W
FROM tbl t
CROSS APPLY(VALUES
(WeekYear + 10000, W1),
(WeekYear + 20000, W2),
(WeekYear + 30000, W3)
)x(WeekYear, W)
另一种方法是使用UNION ALL
:
SELECT
country, ID, WeekYear + 10000 AS WeekYear, W1 AS W
FROM tbl
UNION ALL
SELECT
country, ID, WeekYear + 20000 AS WeekYear, W2 AS W
FROM tbl
UNION ALL
SELECT
country, ID, WeekYear + 30000 AS WeekYear, W3 AS W
FROM tbl
ORDER BY country, ID, WeekYear