2015-03-13 58 views
1

我想創建一個SQL查詢,在這裏我檢查幾個不同表中是否存在重複項。我在Teradata中這樣做。我想要輸出如下所示。如何創建一個SQL查詢來檢查多個表中的重複項

|Table A| |Table B| |Table C| |Table D| |Table D| 

每個欄我們可以得到價值YN的。

(Y表示存在重複項,N表示重複項不存在)。

如何創建此腳本 我已成功地寫出如何在AA表檢查重複的代碼:

SELECT Customer_Id, Year_Month_Id, count(*) 
FROM A 
GROUP BY 1,2 
HAVING count(*)>1) 
+0

其中的腳本語言? – jarlh 2015-03-13 12:31:03

+0

腳本lanuage是SQL – 2015-03-13 12:33:38

+0

SQL不是腳本語言......當你說在多個表中重複時,你的意思是在一個表內還是在表之間? – jarlh 2015-03-13 12:43:22

回答

0

編輯#2:

SELECT 
* 
FROM 

    (SELECT 
    CASE WHEN MAX(cnt) >1 THEN 'Y' ELSE 'N' END AS [Table1] 
     FROM 
     (
     SELECT 
     customer_id, 
     year_month_id, 
     COUNT (*) AS Cnt 
     FROM 
     table1 
     GROUP BY 1,2 
     ) tbl1 
    ) t1 
CROSS JOIN 
    (SELECT 
    CASE WHEN MAX(cnt) >1 THEN 'Y' ELSE 'N' END AS [Table2] 
     FROM 
     (
     SELECT 
     customer_id, 
     year_month_id, 
     COUNT (*) AS Cnt 
     FROM 
     table2 
     GROUP BY 1,2 
     ) tbl2 
    ) t2 

編輯: 用於查找單個表內的重複項:

select 
customer_id, 
year_month_id, 
case when cnt >1 then 'Y' else 'N' end 
from 
(
select 
customer_id, 
year_month_id, 
count (*) as Cnt 
from 
table1 
group by 1,2 
) t 

如果你兩個表之間尋找重複的,我可能會使用一個UNION ALL,這樣的事情:

select 
    customer_Id, 
    year_month_id 
    case when count(*) > 1 then 'Y' else 'N' end 
    from 
    (
    select distinct 
    customer_id, 
    year_month_id 
    from 
    table1 
    group by 1,2 
    UNION ALL 
    select distinct 
    customer_id, 
    year_month_id 
    from 
    table2)t 
    group by 1,2 
+0

我不想在兩個表之間找到重複項。我正在查找表中的重複項。 – 2015-03-13 14:37:53

+0

對不起,誤解了你的問題。看看這是否適合你。 – Andrew 2015-03-13 14:50:25

+0

Np。我很感激你的幫助。這運行。但是,我只想要一行Y或N.這個值應該解釋表中是否有重複。我該如何解決這個問題? – 2015-03-13 15:06:51

相關問題