2014-09-03 65 views
0

赦免問題的標題卻敵不過拉記錄這就是我 -從匹配單個表上的一列和另一列

STAGING_CUST_ACCT(PARTY_KEY,NAME,TAX_ID,......) 

一些樣本數據

1,John,234345 
2,Tom,234345 
1,Ken,000000 
. 
. 
. 

有沒有限制。我需要編寫一個查詢來拉動具有不同party_key但同樣tax_idtax_id所有party_keys不是NULLblank

select distinct a.party_key,a.tax_id from STAGING_CUST_ACCT a 
join STAGING_CUST_ACCT b 
on a.tax_id = b.tax_id 
and a.party_key <> b.party_key 
where ISNULL(a.tax_id,'')<>'' 
AND a.tax_id is not null 

我沒有得到的結果,但我不知道,如果邏輯的實現是正確的。任何人都可以確認/糾正我是否有更簡單的方法來編寫上述查詢?

+0

不平等加入上party_key將返回兩行每對不同的密鑰。如果只需要一行,如果每個差異只需要一行,請嘗試一次大於或小於一次的比較。 – 2014-09-03 18:44:42

+0

你能分享一些樣本數據,所以我們知道你期待什麼?根據你的描述,看起來你不需要加入;你可以只對一方鍵,稅號和過濾失蹤稅號組 – 2014-09-03 18:46:37

+0

@Lain埃爾德 - 感謝您的答覆,我增加了一些樣本數據。在上述情況下,我需要共享同一個tax_id(234345)兩方鍵1和2,包括其名稱。說得通? – 2014-09-03 18:55:57

回答

0

你的where子句(包括和)似乎贅述。 「加入」意味着內部連接的地方將只包括匹配的記錄,空值未加入其他空值,所以

select distinct a.party_key,a.tax_id 
from STAGING_CUST_ACCT a 
inner join STAGING_CUST_ACCT b 
    on a.tax_id = b.tax_id 
    and a.party_key <> b.party_key 

應該給予相同的結果(但你應該確認:P)

編輯哦,而不是空白錯過了部分

select distinct a.party_key,a.tax_id 
from STAGING_CUST_ACCT a 
inner join STAGING_CUST_ACCT b 
    on a.tax_id = b.tax_id 
    and a.party_key <> b.party_key 
    and a.tax_id <> '' 
+0

謝謝@Kritner。我正在測試您的查詢,但與此同時,一個簡短的問題。同意內連接不會加入空值,但可以加入空格嗎? – 2014-09-03 18:44:13

+0

我想我還是會需要ISNULL(a.tax_id,「」)<>「」在我那裏條件,因爲它沒有加入對':) – 2014-09-03 18:45:04

0
select count(*), a.party, a.tax_id 
from STAGING_CUST_ACCT a 
join STAGING_CUST_ACCT b 
on a.tax_id = b.tax_id 
GROUP By a.party, a.tax_id 
Having count(*) = 1 
where a.tax_id is not null 
+0

雖然這個答案可以回答這個問題,說明可能顯著提高接受和了解解決方案。考慮在答案中添加更多細節。謝謝! – 2014-09-03 19:11:53

相關問題