我正在努力完成一些简单的事情,但无法直接思考。我有一个案例,其中1行可以在2个不同的列中具有不同的值。但如果是这样的话,那么这两个值只显示1行,而不是每行显示1行,例如。
ID Col1 col2 col3 col4
46054 2011W3974 164505 1 2
58765 2014W3777 275908 1 NULL
52311 2013W1877 247047 1 NULL
63032 2015W3317 295279 1 NULL
57552 2014W2813 274810 1 NULL
44584 2011W2622 173985 1 2
这需要分为2行,第1行和第6行分为2行,如下所示:
46054 2011W3974 164505 1 NULL
46054 2011W3974 164505 NULL 2
58765 2014W3777 275908 1 NULL
52311 2013W1877 247047 1 NULL
63032 2015W3317 295279 1 NULL
57552 2014W2813 274810 1 NULL
44584 2011W2622 173985 1 NULL
44584 2011W2622 173985 NULL 2
最好的方法是什么?我查看了SPLIT XML函数,但我认为这不会对此有所帮助。我也玩过排名函数,但由于这是2列,我不认为这也可以。请建议
谢谢, RV
答案 0 :(得分:2)
我恰当地将它们结合在一起:
SELECT Id, Col1, Col2, Col3, NULL AS Col4
FROM <Your Table>
WHERE col4 is NULL
UNION
SELECT Id, Col1, Col2, NULL, Col4
FROM <Your Table>
WHERE Col4 = 2
答案 1 :(得分:0)
只使用Union not union All。
SELECT Id, Col1, Col2, Col3, NULL AS Col4
FROM YourTable
WHERE isnull(Col4 , 0) = 0
UNION
SELECT Id, Col1, Col2, NULL as Col3, Col4
FROM YourTable
WHERE isnull(Col3 , 0) = 0