需要T-SQL查询的帮助

时间:2013-04-02 07:28:14

标签: sql sql-server tsql

我有下表...

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

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

  1. 返回每个itemID的{​​{1}}个数,但仅适用于每orderID个订单包含3个或更多订单的OrderID

    < / LI>
  2. 使用单个查询,找到orderID的所有orderID,并列出这些itemID 3425的所有itemID

  3. 对于我试过的第一个......

    orderID

    但它没有给出理想的结果....我是T-SQL的新手,请帮助......

1 个答案:

答案 0 :(得分:2)

<击>

<击>

1和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