2013-04-02 66 views
0

我有以下表...需要用T-SQL查詢援助

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 s的3個或更多的訂單每orderID

  2. 使用單個查詢,發現所有的orderID s有itemID 3425並列出所有itemID s這些orderID s。

對於第一個我想...

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

但它不會放棄希望的結果....我是新來的T-SQL請幫助...

回答

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 

UPDATE 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 
+0

@JW ......太感謝你了....會是什麼第二查詢一? – mmuttam

+0

它應該返回103以及 – mmuttam

+0

是啊現在它的正確...請幫我第二個... – mmuttam