SQL:获取所有值,其中1:N Field具有相同的值

时间:2014-10-08 08:58:16

标签: sql sql-server

我无法获得正确的SQL,而且我不确定它是否完全可能: 我们有一个包含EventID,IndividualID和RoleID的字段。

我需要检查一个人是否参加过其他角色的活动。所以我需要计算每个IndividualID,并检查它是否有多个值。

是否有可能在SQL上执行此操作?我想我错过了一个特殊的表达方式来完成这项工作。如果我使用Count等,它会计算所有个人,但不会计算每个人的ID。

提前致谢!

示例:

一个人参加了同一个活动,一次是xx型,一次是xx2型。 所以这意味着: EventID是相同的两倍,IndividualID是相同的,但此表的类型和ID是不同的。

Edit2:明白了,对不起,

SELECT IndividualId, EventId, COUNT(RoleId) AS cnt
FROM Tablet
WHERE EventId IS NOT NULL
GROUP BY IndividualId, EventId
ORDER BY cnt DESC

我根本没有得到它,我真的需要了解更多:)

3 个答案:

答案 0 :(得分:2)

如果我理解你的问题,你只想做:

SELECT IndividualId, EventId, COUNT(RoleId) as RoleCount
FROM [YOUR_TABLE]
-- JOIN OTHER TABLES IF REQUIRED
GROUP BY IndividualId, EventId
ORDER BY IndividualId, EventId

SQL Fiddle Demo

架构设置

CREATE TABLE Your_Table
    ([IndividualId] int, [RoleId] int, [EventId] int)
;

INSERT INTO Your_Table
    ([IndividualId], [RoleId], [EventId])
VALUES
    (1, 1, 1),
    (1, 2, 1),
    (1, 3, 1),
    (2, 1, 1),
    (2, 2, 1),
    (2, 1, 2),
    (3, 2, 2),
    (4, 1, 2),
    (5, 1, 1),
    (5, 2, 2)
;

<强>查询

SELECT IndividualId, EventId, COUNT(RoleId) as RoleCount
FROM [YOUR_TABLE]
-- JOIN OTHER TABLES IF REQUIRED
GROUP BY IndividualId, EventId
ORDER BY IndividualId, EventId

<强> Results

| INDIVIDUALID | EVENTID | ROLECOUNT |
|--------------|---------|-----------|
|            1 |       1 |         3 |
|            2 |       1 |         2 |
|            2 |       2 |         1 |
|            3 |       2 |         1 |
|            4 |       2 |         1 |
|            5 |       1 |         1 |
|            5 |       2 |         1 |

答案 1 :(得分:1)

这应该这样做:

通过IndividualID从tblName组中选择count(*);

答案 2 :(得分:1)

使用Group By这将完成工作。

SELECT Count(*) FROM TableName GROUP BY IndividualID