0

我正在寻找“Price_amount”属性结果集的总和。答案是 100+150=250 但我如何让它显示为结果集?到目前为止,这是我的查询:

SELECT *
FROM tBoard
INNER JOIN tPrice
ON tBoard.PriceBand_ID = tPrice.PriceBand_ID
WHERE Board_start_date BETWEEN '20150101' AND '20150131'

结果集:

Board_ID|Board_start_date|Board_end_date|PriceBand_ID|Price_amount
001     |01-01-2015      |16-01-2015    |1           |100
002     |01-01-2015      |28-01-2015    |15          |150

我正在使用 SQL SERVER MANAGEMENT STUDIO 2012 Express

4

2 回答 2

1

如果您想查看详细信息,可以使用窗口聚合函数。

使用窗口函数的好处之一是,与分组查询不同,窗口查询不会隐藏细节。它们为每个基础查询的行返回一行。

使用 OVER 子句为函数定义一个行窗口。

你可以试试这个:

 SELECT *, sum(Price_amount) over(order by Board_ID rows between UNBOUNDED PRECEDING and current row) AS [SUM]
 FROM tBoard
 INNER JOIN tPrice
 ON tBoard.PriceBand_ID = tPrice.PriceBand_ID
 WHERE Board_start_date BETWEEN '20150101' AND '20150131'

或者您可以使用基本分组条款(无详细信息)

 SELECT Board_ID,Board_start_date,Board_end_date,PriceBand_ID,sum(Price_amount) AS [SUM]
 FROM tBoard
 INNER JOIN tPrice
 ON tBoard.PriceBand_ID = tPrice.PriceBand_ID
 WHERE Board_start_date BETWEEN '20150101' AND '20150131'
 GROUP BY Board_ID,Board_start_date,Board_end_date,PriceBand_ID
于 2016-04-18T19:02:55.067 回答
0

只需使用窗口函数:

SELECT *, SUM(price_amount) OVER () as total_price_amount
FROM tBoard b INNER JOIN
     tPrice p
     ON b.PriceBand_ID = p.PriceBand_ID
WHERE Board_start_date BETWEEN '20150101' AND '20150131';
于 2016-04-18T20:53:50.067 回答