我有一个查询返回多个日期的数据。仅返回数据集中的最新记录
我想与在该领域的最近日期只返回记录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