Sql查询分组并合并行

时间:2014-06-04 11:54:34

标签: sql sql-server-2008

我正在使用下面的表结构进行sql查询

col1    col2    col3
1        nik    NULL
1        nik1   NULL
1        NULL   mah
1        NULL   mah1

现在我想输出

col1    col2    col3
    1   nik     mah
    1   nik1    mah1

所以我想在col2或col3

中有值时合并空值

我怎样才能实现这一目标?

编辑:主结构是如果col2有值,那么col3将为null,如果col3有值,则col2将为null

所以我想通过填充空值来减少行的总数

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT T1.Col1,T1.Col2,T2.Col3
FROM
(SELECT Col1,Col2,ROW_NUMBER()OVER(ORDER BY Col1) as RN
 FROM TableName
 WHERE Col2 IS NOT NULL) T1 FULL OUTER JOIN
(SELECT Col1,Col3,ROW_NUMBER()OVER(ORDER BY Col1) as RN
 FROM TableName
 WHERE Col3 IS NOT NULL) T2 ON T1.Col1=T2.Col1 AND T1.RN=T2.RN

请参阅SQL Fiddle中的结果。