2013-10-21 18 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'