2014-08-28 70 views
1

我有一個SQL查詢,看起來像這樣的SELECT子句:如何引用的子查詢在SQL語句中

DECLARE @I int 

SET @I = (SELECT W.PMon FROM WHouse.dbo.Rundate AS W) 

SELECT L.ACCOUNT, 
L.ID, 
L.OPENDATE, 
L.ORIGINALBALANCE, 
L.BALANCE, 
L.DUEDATE, 
(SELECT N.BIRTHDATE FROM Sym.dbo.NAME AS N WHERE N.Account = L.Account and N.ORDINAL = 0) AS 'PBD', 
(SELECT N.BIRTHDATE FROM Sym.dbo.LOANNAME AS N WHERE L.Account = N.Account and L.ID = N.PARENTID and N.TYPE IN (01, 16, 20, 21)) AS 'JBD', 
L.CREDITSCORE 

FROM Sym.dbo.Loan AS L 
JOIN Sym.dbo.Account AS A 
ON L.Account = A.Account 
WHERE L.TYPE IN (0, 1, 2, 3, 14, 15, 23) and L.BALANCE > 0 and L.CHARGEOFFDATE IS NULL and L.CLOSEDATE IS NULL and A.TYPE <> 5 

在WHERE子句中,我該如何引用子查詢的SELECT子句中做比較?

回答

2

如果僅返回單個值,則只能將子查詢直接放入select子句中。如果要在select子句和where子句中的表達式中的子查詢中引用,則需要將子查詢放置在具有別名...或作爲連接表的子句中, On子句中的條件:

只需將子查詢放入From子句中的連接中即可。

SELECT L.ACCOUNT, L.ID,L.OPENDATE, 
    L.ORIGINALBALANCE, L.BALANCE, 
    L.DUEDATE, L.CREDITSCORE, 
    pbd.Birthdate PBDBirthdate, 
    jbd.Birthdate JBDBirthdate 
FROM Sym.dbo.Loan AS L 
    JOIN Sym.dbo.Account AS A 
     ON A.Account = L.Account 
    Join Sym.dbo.NAME pbd 
     On pbd.Account = L.Account 
     and pbd.ORDINAL = 0 
    Join Sym.dbo.LOANNAME jbd 
     On jbd.Account = L.Account 
     and jbd.PARENTID = L.ID 
     and jbd.TYPE IN (01, 16, 20, 21)  
WHERE L.TYPE IN (0, 1, 2, 3, 14, 15, 23) 
    and L.BALANCE > 0 
    and L.CHARGEOFFDATE IS NULL 

現在你可以使用別名PBF和/或JBD SELECT子句中引用這兩個表中的列表達式,你可能需要

任何方式