SQL组无法找到正确的短语

时间:2015-08-03 15:04:12

标签: sql sql-server group-by

我有一个简单的设计

id | grpid | main
-----------------
1  |   1   |  1
2  |   1   |  0
3  |   1   |  0
4  |   2   |  0
5  |   2   |  1
6  |   2   |  0

要回答的问题是

What is the "id" of the main in each group?

结果应为

id
---
1
5

此刻,说实话,我自己无法回答。请帮助我。

3 个答案:

答案 0 :(得分:2)

也许我在这里过分简化,但你不能这样做:

select id,
       grpid
  from table
 where main = 1;

答案 1 :(得分:0)

最简单的方法是:

select id from <table_name> where main=1

但正如您所提到的,您想要id以下grpid分组,查询将有效。

select id from <table_name> group by grpid, main having main = 1

您必须对您的群组ID应用group by,并根据该检查将main的值设为1.您将获得所需的结果。

答案 2 :(得分:0)

如果你想为其相应的“MainId”添加一列,你可以这样做吗?

SELECT f.id, f.grpid, f.main, t.MainId
FROM foo f
CROSS APPLY (
    SELECT grpid, id AS MainId 
    FROM foo f1
    WHERE main = 1
        AND f.grpid = f1.grpid) t