2013-10-21 20 views
-1

我想查找一個帳號是否在2個不同的表中(SQL 2005)。如果它在表A中,我想從它中提取一個值,如果它在表B中,我想要做同樣的事情。帳號應該在任一表中,但不能同時在兩個表中。例如,如果在表A中,選擇帳戶名稱否則,如果表B中選擇帳戶日期SQL表中的帳號#

這是我到目前爲止已經試過:

SELECT a.AccountNumber 
, CASE WHEN d.AccountNumber IS NULL THEN 'Yes' ELSE 'No' END AS Status 

FROM tableA的 LEFT JOIN ( SELECT * FROM tableB的b

UNION 

SELECT * 
FROM tableC c 
WHERE AccountNumber NOT IN 
(
    SELECT AccountNumber FROM c 
) 

)d ON a.Account = b.AccountNumber

+0

帳號= '234589' –

+0

你有沒有嘗試什麼嗎? –

+0

任何特定的數據樣本?你應該先嚐試一下,然後在詢問之前發佈你的解決方案(包括疣和所有)。因爲即使您的解決方案不正確,也會對SO社區的問題產生興趣並最終找到正確的解決方案。 – Edper

回答

1

但如果它始終是真實的帳號在兩個表中的一個可能存在與您選擇類似的欄目,你可以不喜歡下面還有

SELECT Col1,Col2,Col3 
FROM TABLEA 
WHERE [email protected] 
UNION 
SELECT Col1,Col2,Col3 
FROM TABLEB 
WHERE [email protected] 

或者你可以嘗試長approarch

DECLARE @Contains BIT=0, 
     @AccNo INT=234589 

SELECT @Contains =1 
FROM TABLEA 
WHERE [email protected] 

IF(@Contains=1) 
BEGIN 

    SELECT * 
    FROM TABLEA 
    WHERE [email protected] 
END 

ELSE 
BEGIN 
    SELECT * 
    FROM TABLEB 
    WHERE [email protected] 
END 
1

嘗試把JOIN在正確的地方:

SELECT CASE WHEN a.AccountNumber IS NULL 
THEN 'Not in Table A' 
WHEN b.AccountNumber IS NULL Then ' Not in Table B' 
END AS 'Status' 
FROM TableA a 
INNER JOIN TableB b 
ON b.AccID = a.AccID 
WHERE AccountNumber = '234598'