0

我有下表...

orderID | itemID
---------------------
100          3425
100          3432
102          4443
102          8754
102          3425
103          6511
103          1176
103          3584
107          4967
109          0067

现在我想要以下查询...

  1. 返回itemID每个 s的数量orderID,但仅适用于每个OrderID具有 3 个或更多订单的 sorderID

  2. 使用单个查询,找到所有具有的orderIDsitemID 3425并列出itemID这些 s 的所有orderIDs。

对于我尝试的第一个...

SELECT orderid,COUNT(itemid) AS item_count
FROM orderitems 
WHERE (select COUNT(orderid) from orderitems) >2
GROUP BY orderid.

但这并没有给出预期的结果....我是 T-SQL 新手,请帮助...

4

1 回答 1

2

1 AND 2 的组合查询。

SELECT  OrderID
FROM    tableName
GROUP   BY OrderID
HAVING  COUNT(*) >= 3 AND
        SUM(CASE WHEN ItemID = 3425 THEN 1 ELSE 0 END) >= 1

更新 1

如果这两个问题不同,

对于问题 1

SELECT  OrderID
FROM    tableName
GROUP   BY OrderID
HAVING  COUNT(*) >= 3 

对于问题 2

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT  OrderID
            FROM    tableName
            GROUP   BY OrderID
            HAVING  SUM(CASE WHEN ItemID = 3425 THEN 1 ELSE 0 END) >= 1
        ) b ON  a.OrderID = b.OrderID
于 2013-04-02T07:29:51.577 回答