Before Fetching 500 records only i want paymentamount to be sorted by descending order
query :
DECLARE @EffectivedtFrom AS DATETIME;
DECLARE @EffectivedtTo AS DATETIME;
SELECT @EffectivedtTo = MAX(EffectiveDate)
FROM claimsheader;
SELECT @EffectivedtFrom = DATEADD(mm, DATEDIFF(mm, 0, DATEADD(mm, -11, @EffectivedtTo)), 0);
--,Dense_Rank() OVER ( ORDER BY (select 1 )) AS Number
select HICN,max(PatientName) as PatientName,MAX(practicename) practicename,MAX(Deceased) Deceased,MAX(ESDR) ESDR
,MAX(Cancer) Cancer,MAX(Hospice) Hospice,SUM(PaymentAmount) PaymentAmount,MAX(EffectiveDate) EffectiveDate,MAX(Number) Number
from(select vw.HICN,vw.Firstname+' '+vw.lastname as PatientName,vw.practice practicename,
case when (d.DateOfDeath is null or d.DateOfDeath ='') then 'No'
else 'Yes' end as Deceased,
case when d.MedicareStatusCode in (11,21,31) then 'Yes'
else 'No' end as ESDR,
case when b.HCC in (11, 9, 10, 12, 8) then 'Yes'
else 'No' end as Cancer,
--case when (d.DateBenEnrolledInHospice is null or d.DateOfDeath ='') then 'No'
case when (d.DateBenEnrolledInHospice is null or d.DateBenEnrolledInHospice ='' or cast(DateBenEnrolledInHospice as datetime) not between @EffectivedtFrom and @EffectivedtTo) then 'No'
else 'Yes' end as Hospice,cast(vw.PaymentAmount as float) as PaymentAmount,vw.EffectiveDate ,
Dense_Rank() OVER ( ORDER BY (SELECT vw.HICN)) AS Number
from vwExpenditureDetails vw
inner join (select * from demographics aa where aa.DemographicsID in(select max(DemographicsID) from demographics group by hicn)) d on vw.HICN=d.HICN
left outer join icdhcc b on vw.PrincipalDiagnosisCode = b.ICD
where cast(vw.EffectiveDate as datetime) BETWEEN @EffectivedtFrom AND @EffectivedtTo AND vw.TaxID=@TIN
) aa where aa.Number between 1 and 500
group by HICN
Khan Abrar AhmedPosted Aug 31, 2015, 4:41 AM
DECLARE @EffectivedtTo AS DATETIME;
SELECT @EffectivedtTo = MAX(EffectiveDate)
FROM claimsheader;
SELECT @EffectivedtFrom = DATEADD(mm, DATEDIFF(mm, 0, DATEADD(mm, - 11, @EffectivedtTo)), 0);
--,Dense_Rank() OVER ( ORDER BY (select 1 )) AS Number
SELECT HICN
,max(PatientName) AS PatientName
,MAX(practicename) practicename
,MAX(Deceased) Deceased
,MAX(ESDR) ESDR
,MAX(Cancer) Cancer
,MAX(Hospice) Hospice
,SUM(PaymentAmount) PaymentAmount
,MAX(EffectiveDate) EffectiveDate
,MAX(Number) Number
FROM (
SELECT vw.HICN
,vw.Firstname + ' ' + vw.lastname AS PatientName
,vw.practice practicename
,CASE
WHEN (
d.DateOfDeath IS NULL
OR d.DateOfDeath = ''
)
THEN 'No'
ELSE 'Yes'
END AS Deceased
,CASE
WHEN d.MedicareStatusCode IN (
11
,21
,31
)
THEN 'Yes'
ELSE 'No'
END AS ESDR
,CASE
WHEN b.HCC IN (
11
,9
,10
,12
,8
)
THEN 'Yes'
ELSE 'No'
END AS Cancer
,
--case when (d.DateBenEnrolledInHospice is null or d.DateOfDeath ='') then 'No'
CASE
WHEN (
d.DateBenEnrolledInHospice IS NULL
OR d.DateBenEnrolledInHospice = ''
OR cast(DateBenEnrolledInHospice AS DATETIME) NOT BETWEEN @EffectivedtFrom
AND @EffectivedtTo
)
THEN 'No'
ELSE 'Yes'
END AS Hospice
,cast(vw.PaymentAmount AS FLOAT) AS PaymentAmount
,vw.EffectiveDate
,Dense_Rank() OVER (
ORDER BY (
SELECT vw.HICN
)
) AS Number
FROM vwExpenditureDetails vw
INNER JOIN (
SELECT *
FROM demographics aa
WHERE aa.DemographicsID IN (
SELECT max(DemographicsID)
FROM demographics
GROUP BY hicn
)
) d ON vw.HICN = d.HICN
LEFT OUTER JOIN icdhcc b ON vw.PrincipalDiagnosisCode = b.ICD
WHERE cast(vw.EffectiveDate AS DATETIME) BETWEEN @EffectivedtFrom
AND @EffectivedtTo
AND vw.TaxID = @TIN
) aa
WHERE aa.Number BETWEEN 1
AND 500
GROUP BY HICN
order by SUM(PaymentAmount) desc