MSSQL SELECT-每组获取一个结果

时间:2018-10-17 08:52:07

标签: sql sql-server

我不知道如何编写mssql select来解决这个问题。

现有表格数据的示例:

Id      GroupID     Pass
___     ________    _____
1       1           1
2       1           0
3       2           1
4       2           0
5       2           0
6       3           1
7       3           1

我需要的是以下示例(如果未通过Group之一,则为0,否则为1):

GroupID       Pass
________      _____
1             0
2             0
3             1

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

使用MIN聚合

SELECT groupid, MIN(pass)
FROM tablename
GROUP BY groupid

答案 1 :(得分:1)

使用窗口功能row_number()

select GroupID,Pass from (
    select *, 
    row_number() over(
        partition by GroupID 
        order by Pass asc
     ) as [rn] 
    from [yourtable] as [t]
) as [t1]
where [rn] = 1;

答案 2 :(得分:0)

MIN 功能与 GROUP BY 一起使用。

查询

select [GroupID], min([Pass]) as [Pass]
from [your_table_name]
group by [GroupID]
order by [GroupID];

如果Pass列的类型为BIT,则需要强制转换为INT