-1

我想查找一个帐号是否在 2 个不同的表中(SQL 2005)。如果它在表 AI 中想要从中提取一个值,如果它在表 BI 中想要做同样的事情。帐号应在任一表中,但不能同时在两个表中。前任。如果在表 A 中,请选择帐户名称,否则如果在表 B 中,请选择帐户日期

这是我到目前为止所尝试的:

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

FROM tableA a 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

4

2 回答 2

1

但是,如果两个表之一中可能存在帐号并且您正在选择相似的列,那么您也可以执行以下操作

SELECT Col1,Col2,Col3
FROM TABLEA
WHERE AccountNo=@AccNo
UNION
SELECT Col1,Col2,Col3
FROM TABLEB
WHERE AccountNo=@AccNo

或者你可以试试长方法

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

SELECT @Contains =1
FROM TABLEA
WHERE AccountNo=@AccNo

IF(@Contains=1)
BEGIN

   SELECT *
   FROM TABLEA
   WHERE AccountNo=@AccNo
END

ELSE 
BEGIN
   SELECT *
   FROM TABLEB
   WHERE AccountNo=@AccNo
END
于 2013-10-21T17:19:42.947 回答
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'  
于 2013-10-21T17:22:54.630 回答