Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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 - Fatal编程技术网

Sql 如何在表头明细表中求和总计

Sql 如何在表头明细表中求和总计,sql,Sql,求求你,我需要你的帮助,我是新来的,所以我有两张表-订单表和订单明细表。我想对订单表中的订单金额求和,并根据订单明细表中存在的产品id进行分组。我被重复吵架了 select p.productName SUM(o.Amount - o.discount) as OrdersTotal FROM dbo.order o inner join OrderDetail d ON o.orderid = d.orderid inner

求求你,我需要你的帮助,我是新来的,所以我有两张表-订单表和订单明细表。我想对订单表中的订单金额求和,并根据订单明细表中存在的产品id进行分组。我被重复吵架了

select p.productName 
       SUM(o.Amount - o.discount) as OrdersTotal
  FROM dbo.order o
       inner join
       OrderDetail d
    ON o.orderid = d.orderid
       inner join
       dbo.product p
    ON d.productid = p.productid
    where o.orderdate >= @fromdate
      and o.orderdate <= @todate
group by p.productname, o.discount 

那么,我如何修正这个结果呢?谢谢

您应该只在产品名称上分组,以便具有相同产品名称的所有记录都包含在金额总和中:

select p.productName 
       SUM(o.Amount) as OrdersTotal
  FROM dbo.order o
       inner join
       OrderDetail d
    ON o.orderid = d.orderid
       inner join
       dbo.product p
    ON d.productid = p.productid
    where o.orderdate >= @fromdate
      and o.orderdate <= @todate
group by p.productname
选择p.productName
订单总计金额(o.Amount)
从dbo.o命令
内连接
订单详细信息d
在o.orderid=d.orderid上
内连接
dbo.p
关于d.productid=p.productid
其中o.orderdate>=@fromdate

和o.orderdate从
GROUP BY
中删除
o.amount
。好的,但是我忘记了添加折扣列以从金额中减去它,因此当我执行语句时,我得到一个错误(折扣在select列表中无效,因为它不包含在聚合函数或GROUP BY子句中)编辑你的问题,把我做的所有数据都放进去,我很抱歉弄错了
select p.productName 
       SUM(o.Amount) as OrdersTotal
  FROM dbo.order o
       inner join
       OrderDetail d
    ON o.orderid = d.orderid
       inner join
       dbo.product p
    ON d.productid = p.productid
    where o.orderdate >= @fromdate
      and o.orderdate <= @todate
group by p.productname