Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将表SQL中的所有价格相加_Sql_Sql Server - Fatal编程技术网

将表SQL中的所有价格相加

将表SQL中的所有价格相加,sql,sql-server,Sql,Sql Server,我有以下SQL查询,它是对所选期间的旅游税求和 SELECT BTR_DESCRIPTION AS TOURIST_TAX_NAME, ISNULL(BREAG_TOURIST_TAX_PRICE,0) AS PRICE, SUM(DATEDIFF(d, BRE_DATEFROM, BRE_DATETO)) AS QUANTITY, ISNULL(BREAG_TOURIST_TAX_PRICE,0) * SUM(DATEDIFF(d, BRE_DATEFR

我有以下SQL查询,它是对所选期间的旅游税求和

SELECT
     BTR_DESCRIPTION AS TOURIST_TAX_NAME,
     ISNULL(BREAG_TOURIST_TAX_PRICE,0) AS PRICE,
     SUM(DATEDIFF(d, BRE_DATEFROM, BRE_DATETO)) AS QUANTITY,
     ISNULL(BREAG_TOURIST_TAX_PRICE,0) * SUM(DATEDIFF(d, BRE_DATEFROM, BRE_DATETO)) AS FINAL_PRICE
FROM BOS_RESERVATION
     LEFT OUTER JOIN BOS_RESADDGUEST ON BREAG_BRE_ID = BRE_ID
     LEFT OUTER JOIN BOS_TAX_REASONS ON BTR_ID = BREAG_BTR_ID
WHERE BREAG_DATEFROM >= '2018-02-28' AND BREAG_DATETO <= '2018-03-31'
GROUP BY BTR_DESCRIPTION, BREAG_TOURIST_TAX_PRICE
但这给了我一个错误:无法对包含聚合或子查询的表达式执行聚合函数

您能帮助我如何计算最终价格行中的所有值的总和吗


谢谢

如果需要最终总价,请使用CTE或子查询:

WITH r as (
      SELECT BTR_DESCRIPTION AS TOURIST_TAX_NAME,
             COALESCE(BREAG_TOURIST_TAX_PRICE, 0) AS PRICE,
             SUM(DATEDIFF(day, BRE_DATEFROM, BRE_DATETO)) AS QUANTITY,
             COALESCE(BREAG_TOURIST_TAX_PRICE, 0) * SUM(DATEDIFF(day, BRE_DATEFROM, BRE_DATETO)) AS FINAL_PRICE
      FROM BOS_RESERVATION LEFT OUTER JOIN
           BOS_RESADDGUEST
           ON BREAG_BRE_ID = BRE_ID LEFT OUTER JOIN
           BOS_TAX_REASONS
           ON BTR_ID = BREAG_BTR_ID
      WHERE BREAG_DATEFROM >= '2018-02-28' AND BREAG_DATETO <= '2018-03-31'
      GROUP BY BTR_DESCRIPTION, BREAG_TOURIST_TAX_PRICE
     )
SELECT SUM(FINAL_PRICE)
FROM r;

您可以这样做:

WITH AggregatedTable as (SELECT
     BTR_DESCRIPTION AS TOURIST_TAX_NAME,
     ISNULL(BREAG_TOURIST_TAX_PRICE,0) AS PRICE,
     SUM(DATEDIFF(d, BRE_DATEFROM, BRE_DATETO)) AS QUANTITY,
     ISNULL(BREAG_TOURIST_TAX_PRICE,0) * SUM(DATEDIFF(d, BRE_DATEFROM, BRE_DATETO)) AS FINAL_PRICE
FROM BOS_RESERVATION
     LEFT OUTER JOIN BOS_RESADDGUEST ON BREAG_BRE_ID = BRE_ID
     LEFT OUTER JOIN BOS_TAX_REASONS ON BTR_ID = BREAG_BTR_ID
WHERE BREAG_DATEFROM >= '2018-02-28' AND BREAG_DATETO <= '2018-03-31'
GROUP BY BTR_DESCRIPTION, BREAG_TOURIST_TAX_PRICE)

Select at.*, 
    (SELECT SUM(FINAL_PRICE) from AggregatedTable)) as Total_FP 
from AggregatedTable AS at

最终价格不是一行,而是一列。所以您的问题不清楚。请尝试使用ROLLUP向GROUP by子句添加。删除GROUP by。谢谢您的帮助!谢谢你帮了我很多@马卡隆没问题,伙计!
WITH AggregatedTable as (SELECT
     BTR_DESCRIPTION AS TOURIST_TAX_NAME,
     ISNULL(BREAG_TOURIST_TAX_PRICE,0) AS PRICE,
     SUM(DATEDIFF(d, BRE_DATEFROM, BRE_DATETO)) AS QUANTITY,
     ISNULL(BREAG_TOURIST_TAX_PRICE,0) * SUM(DATEDIFF(d, BRE_DATEFROM, BRE_DATETO)) AS FINAL_PRICE
FROM BOS_RESERVATION
     LEFT OUTER JOIN BOS_RESADDGUEST ON BREAG_BRE_ID = BRE_ID
     LEFT OUTER JOIN BOS_TAX_REASONS ON BTR_ID = BREAG_BTR_ID
WHERE BREAG_DATEFROM >= '2018-02-28' AND BREAG_DATETO <= '2018-03-31'
GROUP BY BTR_DESCRIPTION, BREAG_TOURIST_TAX_PRICE)

Select at.*, 
    (SELECT SUM(FINAL_PRICE) from AggregatedTable)) as Total_FP 
from AggregatedTable AS at