我有一個查詢返回多個日期的數據。僅返回數據集中的最新記錄
我想與在該領域的最近日期只返回記錄SAPOD(日期其實CYYMMDD其中C = 2000和1 2000年後0之前和YYYYMMDD使用SAPOD=Case when LEFT(SAPOD,1)=1 then '20' else '19' end + SUBSTRING(cast(sapod as nvarchar(7)),2,7)
我可以證明這一點)
這裏是我的查詢:
SELECT GFCUS, Ne.NEEAN, SCDLE, SAPOD, SATCD,CUS.GFCUN, BGCFN1,
BGCFN2, BGCFN3, SV.SVCSA, SV.SVNA1, SV.SVNA2, SV.SVNA3,
SV.SVNA4, SV.SVNA5, SV.SVPZIP, SV.NONUK
FROM SCPF ACC
INNER JOIN GFPF CUS ON GFCPNC = SCAN
LEFT OUTER JOIN SXPF SEQ ON SXCUS = GFCUS AND SXPRIM = ''
LEFT OUTER JOIN SVPFClean SV ON SVSEQ = SXSEQ
LEFT OUTER JOIN BGPF ON BGCUS = GFCUS AND BGCLC = GFCLC
LEFT OUTER JOIN NEPF NE ON SCAB=NE.NEAB and SCAN=ne.NEAN and SCAS=ne.NEAS
LEFT OUTER JOIN SAPF SA ON SCAB=SAAB and SCAN=SAAN and SCAS=SAAS
WHERE
(SATCD>500 and
scsac='IV' and
scbal = 0 and
scai30<>'Y' and
scai14<>'Y' and
not exists(select * from v5pf where v5and=scan and v5bal<>0))
GROUP BY GFCUS, Ne.NEEAN, SCDLE, SAPOD, SATCD,
CUS.GFCUN, BGCFN1, BGCFN2, BGCFN3, SV.SVCSA,
SV.SVNA1, SV.SVNA2, SV.SVNA3, SV.SVNA4, SV.SVNA5, SV.SVPZIP, SV.NONUK
ORDER BY MAX(SCAN) ASC, SAPOD DESC
我得到的結果類似下面那裏有一個客戶聯繫多次交易,而我們只想顯示最近的交易數據:
那麼我怎樣才能顯示最近的交易?這是我應該使用OUTER APPLY
還是CROSS APPY
?
編輯:
對不起,我要澄清,我需要的最近的每個領域NEEAN
獨特的記錄日期是帳戶數
我覺得您所有的查詢需求是'極限1'。糟糕SqlServer警報!取而代之的是「Top 1」。 – venkatKA 2014-09-12 11:06:21
我想這會是'SELECT TOP 1 ...' – Bulat 2014-09-12 11:07:33
你能提供樣本數據和預期結果 – Bulat 2014-09-12 11:10:54