2013-07-11 54 views
0

我遇到了問題,我一直在爲它工作過去三個小時左右,還沒有找到解決方案。在SQL Server平臺上運行。我有一張看起來像這樣的桌子。尋找缺失的行T-SQL

PT ITM VAL 
-- --- --- 
01 01 A 
01 02 B 
01 03 C 
02 01 A 
02 03 C 
03 01 A 
03 02 B 

我想找到哪些PT缺少項目編號。

在上面的情況下,PT02和PT03缺少兩個項目。這是我開始工作的基礎,但我不確定我是否在正確的軌道上。

select t.PT,t.ITM 
FROM MYTABLE t 
GROUP BY t.PT,t.ITM 
HAVING COUNT(*) > 1 

感謝 jlimited

+0

所以每個PT只有三個ITMs – Sunny

回答

3

如果你希望每PT 3 ITM,查詢將

select PT 
FROM MYTABLE 
GROUP BY PT 
HAVING COUNT(ITM) < 3 

用於需要更復雜的查詢的其他條件。

+0

謝謝......這使我更接近我需要的東西。 – jlimited

2

這是有效的解決方案。我必須選擇一個已填充的VAL,才能找到沒有的值。

select stg.PT,COUNT(stg.ITM) AS ITM_CNT 
    FROM MYTABLE stg 
WHERE stg.ITM IS NOT NULL 
    AND stg.VAL IN (11) 
GROUP BY stg.PT 
HAVING COUNT(stg.ITM) > 1 
EXCEPT 
select stg.PT,COUNT(stg.ITM) AS ITM_CNT 
    FROM MYTABLE stg 
WHERE stg.ITM IS NOT NULL 
    AND stg.VLA IN (4,5) 
GROUP BY stg.PT 
HAVING COUNT(stg.ITM) > 1