2016-08-22 81 views
0

我正在尋找重複的地址,但是我有一些結果在「已完成」中出現重複結果。如何排除顯示的結果?這裏是我當前的查詢在一列中搜索重複行,如何在另一列中重複排除?

SELECT WorkOrder, list.Address, list.Completed 
FROM list 
INNER JOIN(
    SELECT list.Address 
    FROM list 
    WHERE list.Reference = 0 
    GROUP BY Address 
    Having COUNT(WorkOrder) = 2 
    ) 
    temp ON list.Address = temp.Address 
WHERE list.Address != "" 
ORDER BY list.Address ASC, list.Completed ASC 

輸出示例:

WorkOrder | Address | Completed 
41471286 | 127 LONG LN | 1 
65381835 | 127 LONG LN | 1 
39796565 | 13516 MOORING DR | 0 
68128218 | 13516 MOORING DR | 1 
39796559 | 13520 MOORING DR | 0 
68004427 | 13520 MOORING DR | 1 

我需要前兩個結果既完成了標有1

+0

請爲數據添加DDLs,SQLFiddle,以便人們可以給出更好的答案。 –

+0

這個'Reference = 0'的因子如何? – shawnt00

回答

0

試試這個沒有出現在我的搜索:

SELECT WorkOrder, Address, MIN(Completed) FROM list GROUP BY WorkOrder, Address 
0

您目前的做法並不遙遠。在我下面的查詢中,我組由AddressCompleted列,使用下列標準地址/完成對是否將被保留:

HAVING SUM(Completed) < 2 

這種情況將刪除重複項,其中兩條記錄已經標記爲完整,但將保留其他所有內容。

SELECT t1.WorkOrder, 
     t1.Address, 
     t1.Completed 
FROM list t1 
INNER JOIN 
(
    SELECT Address, Completed 
    FROM list 
    WHERE Reference = 0    -- don't know what this is for, as it does not appear 
    GROUP BY Address, Completed  -- in your sample data 
    HAVING SUM(Completed) < 2  -- retain if completed is not marked twice or more 
) t2 
    ON t1.Address = t2.Address AND 
     t1.Completed = t2.Completed 
WHERE t1.Address != "" 
ORDER BY t1.Address, 
     t1.Completed