从distint查询中选择非重复项

时间:2016-10-24 07:31:08

标签: sql sql-server select duplicates

我正在与SQL查询斗争,我无法解决它。有这样一张桌子:

SELECT DISTINCT Field1, Field2 
FROM myTable 
WHERE Field3 = 'value';
ID  Field1  Field2
1   Yes     Info
1   No      Info
2   Yes     Info
3   No      Info
3   Yes     Info
4   No      Info

我希望得到一个结果查询,其中没有任何重复值。如果有重复值,我希望得到“是”,而在其他情况下,我希望在该字段中有现有值(是或否)。

ID  Field1  Field2
1   Yes     Info
2   Yes     Info
3   Yes     Info
4   No      Info

提前致谢!

4 个答案:

答案 0 :(得分:0)

id分组,它会自动完成工作

 SELECT DISTINCT Field1, Field2 FROM myTable WHERE Field3 = 'value' group by id

答案 1 :(得分:0)

您可以使用GROUP BY查询:

SELECT CASE WHEN COUNT(* ) > 1 THEN 'Yes' ELSE Field1 END AS Field1, Field2 FROM myTable GROUP BY 2

答案 2 :(得分:0)

如果您希望针对与ID对应的给定记录对优先选择Yes而不是No,那么您可以选择Field1的最大值(以及{{的最大值} 1}}):

Field2

答案 3 :(得分:0)

select DISTINCT 
ID,
case
 when (group_concat(Field1))="YesNo" then "Yes"
 when (group_concat(Field1))="NoYes" then "Yes"
 else (group_concat(Field1)) 
end as Field1,
Field2 from
(SELECT DISTINCT ID,Field1, Field2 
FROM myTable 
WHERE Field3 = 'value')A
group by ID