查询返回结果中只有一个值的所有id

时间:2011-12-12 20:28:13

标签: sql-server-2008

我有一个像这样定义的表

CREATE TABLE OrderItemRoomings(
    OrderItemRoomingId int IDENTITY(1,1) NOT NULL,
    OrderItemId int NOT NULL,
    PaxId int NOT NULL,
    GroupNumber tinyint NOT NULL)

我正在尝试获取所有OrderItemId,这些+-----------------------------------+ | OrderItemId | PaxId | GroupNumber | +-----------------------------------+ | 101 | 501 | 1 | +-----------------------------------+ | 101 | 502 | 1 | +-----------------------------------+ | 102 | 503 | 2 | +-----------------------------------+ | 102 | 504 | 2 | +-----------------------------------+ | 103 | 505 | 1 | +-----------------------------------+ | 103 | 506 | 2 | +-----------------------------------+ 在分组时具有不同的组号

假设这个表

103

我希望查询返回GROUP BY,因为id 103有两个不同的组号。

我无法找出检查所有子结果详细信息的{{1}}查询。

2 个答案:

答案 0 :(得分:3)

SELECT OrderItemId
FROM MyTable
GROUP BY OrderItemID
HAVING COUNT(DISTINCT GroupNumber) > 1

使用HAVING对分组集进行过滤。这里我们只显示具有多个唯一groupnumber值的orderitemid记录。

答案 1 :(得分:2)

不像JNK的答案那样优雅但是使用派生的查询:

SELECT OrderItemId
FROM
(
SELECT 
    OrderItemId
FROM 
    OrderItemRoomings
GROUP BY
    OrderItemId,
    GroupNumber) AS D
GROUP BY OrderItemId
HAVING Count(*) > 1