如何在特定列上选择不同的

Zer*_*ity 9 distinct sql-server-2008

我在表格中有几列

Col1,Col2,Col3,Col4

现在我想选择这样的

SELECT DISTINCT (Col1, Col2, Col3), Col4

即基于这三个colunms得到不同的.

Mah*_*mal 6

只要GROUP BY Col1, Col2, Col3有与聚合函数col4一样MAX,MIN等等.就像这样:

SELECT Col1, Col2, Col3, MAX(Col4)
FROM TableName
GROUP BY Col1, Col2, Col3
Run Code Online (Sandbox Code Playgroud)


Mik*_*son 3

从评论到另一个答案:

我可以得到这样的 Col1, Col2 , Col3 和 (Col4 以分隔符形式)

是的,您可以使用for xml path.

select Col1, 
       Col2,  
       Col3, 
       (
        select ',' + T2.Col4
        from YourTable T2
        where T1.Col1 = T2.Col1 and
              T1.Col2 = T2.Col2 and
              T1.Col3 = T2.Col3
        for xml path(''), type
       ).value('substring((./text())[1], 2)', 'varchar(max)') as Col4
from YourTable as T1
group by T1.Col1, T1.Col2, T1.Col3
Run Code Online (Sandbox Code Playgroud)

SQL小提琴