2013-11-21 66 views
0

場景:從一張表中檢索四列中三列數據相同的記錄?

一臺名爲 「項」

六列: 「Item_Num」, 「ITEM_NAME」, 「狀態」, 「過道」, 「賓」 & 「數量」

目標確保具有相同「狀態」的「Item_Num」/「Item_Name」位於相同的「過道」和「箱」位置;然而,可能有兩個相同的「Item_Num」/「Item_Name」和「Status」框可能位於單獨的「過道」和「Bin」位置的實例。我希望能夠爲系統運行查詢的記錄,其中「Item_Num」,「ITEM_NAME」和「狀態」是相同的,但「過道」和「賓」的數據不匹配。

Item_Num | Item_Name | Status | Aisle | Bin | Qty 
5206  | Popcorn  |  A  |  1  | 2 | 5 
5206  | Popcorn  |  A  |  1  | 3 | 4 
5206  | Popcorn  |  A  |  2  | 2 | 5 
5206  | Popcorn  |  B  |  1  | 4 | 2 

在上面的例子中,我想系統返回。其中,第一列相匹配的行這將允許三個項目合併到一個位置

+0

你能提供所需的輸出嗎? – Shann

回答

0

試試這個:

select a.Item_num,a.Item_Name,a.Status,a.Aisle,a.Bin,a.qty from table a inner join table b 
ON a.Item_num=b.Item_num and a.Item_Name=b.Item_Name and a.Status=b.Status and a.Aisle <> b.Aisle and a.Bin <> b.Bin 
0

首先得到查找哪個項目記錄組具有多個過道倉位值。然後返回屬於這些組的任何行。

with g as 
(select item_num, item_name, status, 
     count(distinct aisle) as aisles, 
     count(distinct bin) as bins 
    from items 
    group by item_num, item_name, status 
    having count(distinct aisle) > 1 
     or count(distinct bin) > 1 
) 
select i.item_num, i.item_name, i.status, 
     i.aisle, i.bin, 
     sum(1.qty) tot_qty 
    from items i 
    join g  on (i.item_num, i.item_name, i.status) 
        =(g.item_num, g.item_name, g.status) 
    group by item_num, item_name, status, aisle, bin