13

我的表中有几列

Col1 , Col2 , Col3 , Col4

现在我想像这样选择

SELECT DISTINCT (Col1, Col2, Col3), Col4

即仅基于这三个列得到不同的。

4

4 回答 4

6

只需GROUP BY Col1, Col2, Col3使用带有col4like MAX,MIN等的聚合函数 .. 就像这样:

SELECT Col1, Col2, Col3, MAX(Col4)
FROM TableName
GROUP BY Col1, Col2, Col3
于 2012-09-27T12:00:14.310 回答
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小提琴

于 2012-09-28T05:32:40.643 回答
1

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

所以下面的两个查询几乎是等价的:

SELECT DISTINCT Col1, Col2, Col3 FROM tbl

SELECT Col1, Col2, Col3 FROM tbl GROUP BY Col1, Col2, Col3
于 2012-09-27T12:03:13.450 回答
0
select distinct ( Convert(varchar(255),Col1) +' '+
Convert(varchar(255),Col2)+' '+Convert(varchar(255),Col3)),
Col4 from clients
于 2012-09-27T12:11:40.827 回答