编辑:下面是我正在使用的数据。我写的查询给出了基于OCCPSTAT字段的重复数据(最右边的数据列,C或N)。需要帮助撰写查询。
我需要一个查询来拉出最接近我定义日期的记录(代码是这样),但是,如果有记录的C和N副本,我只需要N记录。
5000 1000 D001 RNT 100 11/1/2014 0:00 C
5000 1000 D001 GAS 200 11/1/2014 0:00 C
5000 1000 D001 ELC 300 11/1/2014 0:00 C
5000 1000 D001 WAT 400 11/1/2014 0:00 C
5000 1000 D001 TAX 500 11/1/2014 0:00 C
5000 1000 D001 INS 600 11/1/2014 0:00 C
5000 1000 D001 RNT 200 11/1/2015 0:00 C
5000 1000 D001 GAS 300 11/1/2015 0:00 C
5000 1000 D001 ELC 400 11/1/2015 0:00 C
5000 1000 D001 WAT 500 11/1/2015 0:00 C
5000 1000 D001 TAX 600 11/1/2015 0:00 C
5000 1000 D001 INS 700 11/1/2015 0:00 C
5000 1000 D001 RNT 300 11/1/2016 0:00 C
5000 1000 D001 GAS 400 11/1/2016 0:00 C
5000 1000 D001 ELC 500 11/1/2016 0:00 C
5000 1000 D001 WAT 600 11/1/2016 0:00 C
5000 1000 D001 TAX 700 11/1/2016 0:00 C
5000 1000 D001 INS 800 11/1/2016 0:00 C
5000 1000 D001 RNT 500 11/1/2017 0:00 C
5000 1000 D001 GAS 600 11/1/2017 0:00 C
5000 1000 D001 ELC 700 11/1/2017 0:00 C
5000 1000 D001 WAT 800 11/1/2017 0:00 C
5000 1000 D001 TAX 900 11/1/2017 0:00 C
5000 1000 D001 INS 100011/1/2017 0:00 C
5000 1000 D001 RNT 100 11/1/2014 0:00 N
5000 1000 D001 GAS 200 11/1/2014 0:00 N
5000 1000 D001 ELC 300 11/1/2014 0:00 N
5000 1000 D001 WAT 400 11/1/2014 0:00 N
5000 1000 D001 TAX 500 11/1/2014 0:00 N
5000 1000 D001 INS 600 11/1/2014 0:00 N
5000 1000 D001 RNT 200 11/1/2015 0:00 N
5000 1000 D001 GAS 300 11/1/2015 0:00 N
5000 1000 D001 ELC 400 11/1/2015 0:00 N
5000 1000 D001 WAT 500 11/1/2015 0:00 N
5000 1000 D001 TAX 600 11/1/2015 0:00 N
5000 1000 D001 INS 700 11/1/2015 0:00 N
5000 1000 D001 RNT 300 11/1/2016 0:00 N
5000 1000 D001 GAS 400 11/1/2016 0:00 N
5000 1000 D001 ELC 500 11/1/2016 0:00 N
5000 1000 D001 WAT 600 11/1/2016 0:00 N
5000 1000 D001 TAX 700 11/1/2016 0:00 N
5000 1000 D001 INS 800 11/1/2016 0:00 N
5000 1000 D001 RNT 500 11/1/2017 0:00 N
5000 1000 D001 GAS 600 11/1/2017 0:00 N
5000 1000 D001 ELC 700 11/1/2017 0:00 N
5000 1000 D001 WAT 800 11/1/2017 0:00 N
5000 1000 D001 TAX 900 11/1/2017 0:00 N
5000 1000 D001 INS 1000 11/1/2017 0:00 N
查询是:
SELECT
BLDGID,
LEASID,
SUITID,
INCCAT,
AMOUNT,
EFFDATE,
OCCPSTAT
FROM(
SELECT
CM.BLDGID,
CM.LEASID,
LS.SUITID,
CM.INCCAT,
CM.AMOUNT,
CM.EFFDATE,
LS.OCCPSTAT,
ROW_NUMBER() OVER(PARTITION BY CM.BLDGID, CM.LEASID, LS.SUITID, CM.INCCAT, LS.OCCPSTAT
ORDER BY CM.EFFDATE DESC) AS rowno
FROM SQLDATA.DBO.CMRECC CM INNER JOIN SQLDATA.DBO.LEAS LS ON CM.LEASID = LS.LEASID
WHERE (CM.EFFDATE < '20170601') AND (CM.BLDGID = '85000') AND (LS.OCCPSTAT = 'C' OR LS.OCCPSTAT = 'N')
) AS d
WHERE rowno = 1
因为案件正在同一行你不能用'Case'做,但你要检查的结果集,并看到,如果相同的记录存在与C和N然后只返回N,对吗? – RezaRahmati
@RezaRahmati,这正是我想要做的。 – SQLISHARD