我有一个像这样定义的表
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}}查询。
答案 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