嘿伙计们,我有这份报告,我正在努力。它有多个列,在这些列之间是一些Left连接。所以我的问题是,如何在查询中添加左连接?
Declare @asofdate smalldatetime
Set @asofdate = '2017-08-24'
SELECT
OCCONR as [Company Number],
OCCMNR as [Claim Number], --CMOCUR db)
OCEXCD as [Claim Counsel], ---(CMOCUR db)
DATEFROMPARTS(OCEFCN*100+OCEFYY,OCEFMM,OCEFDD) as [Policy Effective Date], -- (CMOCUR db)
iif([True CAT Nbr] is null, OCCTCD, [True CAT Nbr]) as [CAT Code], ---(Check Comment 1)
iif(LSCMNT is null,'', LSCMNT) as [NOA Comments], --- (Check Comemnt 2)
concat([First_Name],' ',[Last_Name]) as [Insured Name], --- (Check Comment 3)
DatefromParts([OCLSCN]*100+[OCLSYY],[OCLSMM],[OCLSDD]) as [Occurrence Date], --- (CMOCUR db)
rtrim(ltrim(OCDACC)) as [Cause of Loss], --- (CMOCUR db)
DatefromParts([OCRPCN]*100+[OCRPYY],[OCRPMM],[OCRPDD]) as [Claim Reported Date], --- (CMOCUR db)
iif(LSSETLD is null,'', LSSETLD) as [Settled Indicator], --- (Check Comment 2)
--iif(SUM([Incurred Loss NET OF S&S]) - SUM([Paid Loss NET OF S&S]) = 0, 'Closed', 'Open') as [Status in AS-400]
iif(OCCLCN=0,'',datefromparts(OCCLCN*100+OCCLYY,OCCLMM,OCCLDD)) as [Closed Date], --- (CMOCUR db)
iif(LSCLCN=0 OR LSCLCN IS NULL,'',DatefromParts(LSCLCN*100+LSCLYY,LSCLMM,LSCLDD)) as [All Closed Date] ----(Comment 2)
--[Last Reserve Change Date]
FROM AS400.FRTDTA250.CMOCUR
LEFT JOIN Lookups.dbo.[Bad CAT Codes] ON [Claim Nbr] = OCCMNR ---- This LEFT JOIN provides the CAT CODE for this report (Comment 1)
LEFT JOIN AS400.FRTDTA250.CMLSCP ON LSCMNR = OCCMNR ---- This is used to pull any COMMENTS and SETTLEMENT made on a claim (Comment 2)
LEFT JOIN Lookups.dbo.Insured_Name_By_PolicyNum ON Prefix = OCPRFX and Polnum = OCPLNR --- This is to add the INSURED NAME (comment 3)
所以,我遇到的问题是我有其他子查询,旨在为[AS-400中的状态]和[上次保留更改日期]提供信息。如何将此查询连接到SQL?
以下是我尝试添加到选择查询的2个查询:
- 查询[AS-400中的状态]
SELECT
---s1.[Claim Number],
iif(SUM(s1.[Incurred Loss NET OF S&S]) - SUM(s1.[Paid Loss NET OF S&S]) = 0, 'Closed', 'Open') as [Open / Closed]
---SUM(s1.[Incurred Loss NET OF S&S]) - SUM(s1.[Paid Loss NET OF S&S]) as [Loss C/R]
FROM
(
SELECT
OCCMNR as [Claim Number],
SUM(iif(DATASETTYPE IN ('Incurred LOSS'), CTTRAM, iif(DATASETTYPE IN ('SALVAGE','SUBROGATION','OTHER RECOVERIES'), -CTTRAM, 0))) AS [Incurred Loss NET OF S&S],
SUM(iif(DATASETTYPE IN ('Paid LOSS'), CTTRAM, iif(DATASETTYPE IN ('SALVAGE','SUBROGATION','OTHER RECOVERIES'), -CTTRAM, 0))) AS [Paid Loss NET OF S&S]
FROM AS400.FRTDTA250.[CMOCUR] AS A
INNER JOIN AS400.FRTDTA250.[CMTRAN]AS B ON A.OCCMNR = B.CTCMNR
LEFT JOIN Lookups.dbo.TransactionCodes AS C ON B.CTGRPC = C.TransactionCode
WHERE DATEFROMPARTS(CTTRCN*100+CTTRYY, CTTRMM, CTTRDD) <= @asofdate
and CTTRSB not in (4,12)
and CTTSCD = 'P'
GROUP BY OCCMNR
) as s1
GROUP BY s1.[Claim Number]
ORDER BY s1.[Claim Number]
- 查询[上次保留更改日期]
Select [Claim Number],
left(convert(CHAR, Max([Loss Transaction Date]), 120),10) as [Last Reserve Change Date]
From
(
Select [OCCMNR] as [Claim Number],
DATEFROMPARTS(CTTRCN*100+CTTRYY, CTTRMM, CTTRDD) as [Loss Transaction Date],
iif(DATASETTYPE IN ('Incurred LOSS'), CTTRAM, 0) as [Incurred Loss]
From AS400.FRTDTA250.[CMTRAN] as b1
LEFT JOIN AS400.FRTDTA250.[CMOCUR] as a1
ON a1.OCCMNR = b1.CTCMNR
LEFT JOIN Lookups.dbo.TransactionCodes as c1
ON b1.CTGRPC = c1.TransactionCode
Where (iif(DATASETTYPE IN ('Incurred LOSS'), CTTRAM, 0) <> 0)
and DATEFROMPARTS(CTTRCN*100+CTTRYY, CTTRMM, CTTRDD) <= @asofdate
and CTTRSB not in (4,12)
AND CTTSCD = 'P'
) s2
group by [Claim Number]
) as G
on G.[Claim Number] = a.[OCCMNR]
我使用的是MS-SQL Server
答案 0 :(得分:0)
加入子查询的格式如下:
SELECT *
FROM TABLEA A
INNER JOIN TABLED D on A.ID = D.ID
LEFT JOIN
( SELECT B.ID,COLUMN_A
FROM TABLEB B
INNER JOIN TABLEC C ON B.ID = C.ID
) X ON A.ID = X.ID