我陷入了一个SQL查询。
我的表格格式如下:
Acct# AdmitDate DOS ChargeAmount 12366 2011-12-07 00:00:00.000 2011-12-15 00:00:00.000 25.00 12366 2011-12-07 00:00:00.000 2011-12-16 00:00:00.000 30.00 12366 2011-12-07 00:00:00.000 2011-12-17 00:00:00.000 55.00 12366 2011-12-07 00:00:00.000 2011-12-18 00:00:00.000 48.00 12366 2011-12-07 00:00:00.000 2011-12-19 00:00:00.000 25.00 12366 2012-01-08 00:00:00.000 2012-01-08 00:00:00.000 58.00 12366 2012-01-08 00:00:00.000 2012-01-09 00:00:00.000 46.00 12366 2012-01-08 00:00:00.000 2012-01-10 00:00:00.000 90.00 12366 2012-01-08 00:00:00.000 2012-01-11 00:00:00.000 52.00 12366 2012-01-08 00:00:00.000 2012-01-12 00:00:00.000 95.00 12366 2012-01-08 00:00:00.000 2012-01-13 00:00:00.000 53.20
我希望只有前3 DOS 一个录取日期和他们的 ChargeAmount 的总和。所有其他的DOS应该是neglact。
我不知道怎么做。我想要下面想要的输出。
Acct# AdmitDate ChargeAmount 12366 2011-12-07 00:00:00.000 128.00 12366 2012-01-08 00:00:00.000 200.00
仅2011-12-17至2011-12-19对于2011-12-07的录取日期需要与其他录取日期相同并做同样的事。 如果您有任何SQL查询请与我分享。
提前致谢
答案 0 :(得分:1)
尝试:
SELECT TOP 3 Acct, AdmitDate, SUM(ChargeAmount)
FROM YourTable
GROUP BY Acct, AdmitDate
修改强>
SELECT Acct, AdmitDate, SUM(ChargeAmount)
, RANK() OVER (PARTITION BY AdmitDate ORDER BY AdmitDate DESC)
FROM YourTable
GROUP BY Acct, AdmitDate
答案 1 :(得分:0)
Select Acct#, AdmitDate, sum(ChargeAmount) ChargeAmount from (Select Acct#, AdmitDate, row_number() over(partition by AdmitDate order by DOS desc) RowNo, ChargeAmount from TableName where Acct# = @AcctNumber ) as t where (RowNo = 1 or RowNo = 2 or RowNo = 3) group by Acct#, AdmitDate
我找到了查询。这个查询对我来说很好。谢谢你的努力。