У меня есть таблица PMCContract
с уникальным индексом 'ContractID', в котором указывается контракт с клиентами, которые живут в домах. Я хочу знать, какая ContractID
с AgreementType = 0
была активной ранее.
У меня уже есть следующий запрос, чтобы показать NEXT ContractID
с AgreementType = 0
, но теперь я хочу показать LAST ContractID
с AgreementType = 0
. Что выглядит следующим образом:
WITH PMC
AS (SELECT PMCCONTRACT.CONTRACTID AS 'ContractId'
,PMCCONTRACT.ACCOUNTNUM AS 'Klantnummer'
,PMCCONTRACT.[NAME]
,CASE
WHEN PMCCONTRACT.AGREEMENTTYPE = '0' THEN 'Sociale verhuur'
WHEN PMCCONTRACT.AGREEMENTTYPE = '3' THEN 'Huurderving'
END AS 'Type huurovereenkomst'
,PMCCONTRACT.STATECODE AS 'Statuscode'
,PMCCONTRACT.RENTALOBJECTID AS 'Vastgoedobject ID'
,NULLIF(CONVERT(DATE, PMCCONTRACT.VALIDFROM), '') AS 'Geldig vanaf'
,NULLIF(CONVERT(DATE, PMCCONTRACT.VALIDTO), '') AS 'Geldig t/m'
,CASE
WHEN PMCCONTRACT.CONTRACTSTATUS = 1 THEN 'Voorlopig'
WHEN PMCCONTRACT.CONTRACTSTATUS = 2 THEN 'Actief'
WHEN PMCCONTRACT.CONTRACTSTATUS = 3 THEN 'Beëindigd'
WHEN PMCCONTRACT.CONTRACTSTATUS = 4 THEN 'Opgezegd'
WHEN PMCCONTRACT.CONTRACTSTATUS = 5 THEN 'Geannuleerd'
WHEN PMCCONTRACT.CONTRACTSTATUS = 6 THEN 'Historisch'
WHEN PMCCONTRACT.CONTRACTSTATUS = 10 THEN 'Vervallen'
END AS 'Contract status'
,ConcatResult = MIN(CASE
WHEN AGREEMENTTYPE <> '3'
THEN FORMAT(PMCCONTRACT.VALIDFROM, 'yyyy-MM-dd')
+ FORMAT(ISNULL(PMCCONTRACT.VALIDTO, '1900-01-01'), 'yyyy-MM-dd')
+ CONTRACTID
END)
OVER (
PARTITION BY RENTALOBJECTID
ORDER BY PMCCONTRACT.VALIDFROM DESC
ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING)
FROM PMCCONTRACT)
SELECT *,
[Vorige ContractId] = SUBSTRING(ConcatResult, 21, 10)
FROM PMC
WHERE PMC.[Vastgoedobject ID] = 1000
ORDER BY [Vastgoedobject ID] ASC,
[Geldig vanaf] ASC
Простое изменение DES C на AS C не работает в ORDER BY PMCCONTRACT.VALIDFROM DESC
. Есть предложения?