2

我陷入了一个 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

我只想要一个Admit DateChargeAmount总和的前 3 个DOS。所有其他 DOS 都应该被忽略。我不知道该怎么做。我想要以下所需的输出。

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 查询,请与我分享。

提前致谢

4

2 回答 2

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
于 2013-02-15T09:42:33.023 回答
0
选择
帐户#,
录取日期,
sum(ChargeAmount) ChargeAmount
从
(选择
帐户#,
录取日期,
row_number() over(按 DOS desc 的 AdmitDate 顺序分区) RowNo,
收费金额
从表名
其中Acct# = @AcctNumber
) 作为 t

其中(行号 = 1 或行号 = 2 或行号 = 3)

按Acct#、AdmitDate分组

我找到了查询。这个查询对我来说很好。感谢您的努力。

于 2013-02-18T10:00:23.573 回答