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

时间:2012-09-27 11:57:40

标签: sql-server-2008 distinct

表格中的列数很少

Col1 Col2 Col3 Col4

现在我想选择这样的

SELECT DISTINCT (Col1, Col2, Col3), Col4

即。只根据这三个组来获得区别。

4 个答案:

答案 0 :(得分:6)

GROUP BY Col1, Col2, Col3只有col4的汇总功能,例如MAXMIN等等。就像这样:

SELECT Col1, Col2, Col3, MAX(Col4)
FROM TableName
GROUP BY Col1, Col2, Col3

答案 1 :(得分: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

SQL Fiddle

答案 2 :(得分:0)

group by和distinct在SQL中执行几乎相似的功能:

所以下面的两个查询几乎相同:

SELECT DISTINCT Col1, Col2, Col3 FROM tbl

SELECT Col1, Col2, Col3 FROM tbl GROUP BY Col1, Col2, Col3

答案 3 :(得分:0)

select distinct ( Convert(varchar(255),Col1) +' '+
Convert(varchar(255),Col2)+' '+Convert(varchar(255),Col3)),
Col4 from clients