ER DIAGRAM SNAP必须查找每年2种订单的订单金额总计。
table是SalesOrderHeader
小计+ TaxAmt给出总订单金额
OnlineOrderFlag(0/1分别是直接/在线)
1>以下列格式显示结果
OrderYear Direct Online
2001 75423 344344
2002
2003
2004
SQL:
select year(a.OrderDate),
( select SUM(SubTotal+TaxAmt) FROM SalesOrderHeader b WHERE OnlineOrderFlag = 0 group by year(b.OrderDate) ) as tot ,
( select SUM(SubTotal+TaxAmt) FROM SalesOrderHeader c WHERE OnlineOrderFlag = 1 group by year(c.OrderDate) ) as tt
FROM SalesOrderHeader a inner join SalesOrderHeader b
on b.SalesOrderID = a.SalesOrderID
inner join
SalesOrderHeader c on c.SalesOrderID = a.SalesOrderID
有人可以请电话如何进一步处理?我被困在这个
2 - ;以及如何以下面的格式找到它?
OnlineFlag Year TotalAmt
Direct 2001
Direct 2002
Direct 2003
Direct 2004
Online 2001
Online 2002
Online 2003
Online 2004
答案 0 :(得分:1)
这应该有效。添加内部子查询以明确需要去的组的位置,并在汇总之前为每条记录添加小计和税。
select a.year
,SUM(Case when a.OnlineOrderFlag = 1 THEN a.total else null end) as Direct
,SUM(Case when a.OnlineOrderFlag = 0 THEN a.total else null end) as Online
FROM (select year(OrderDate) as year, (SubTotal+TaxAmt) as total, OnlineOrderFlag
from SalesOrderHeader) a
Group by a.year
答案 1 :(得分:0)
SELECT YEAR(ORDERDATE), ONLINEORDERFLAG,
SUM(SUBTOTAL) SUBTOTAL,SUM(TAXAMT) TAXAMT,
SUM(SUBTOTAL + TAXAMT) TOTALDUE
FROM SALESORDERHEADER
WHERE ONLINEORDERFLAG = 1
GROUP BY YEAR(ORDERDATE) WITH ROLLUP
UNION
SELECT YEAR(ORDERDATE), ONLINEORDERFLAG,
SUM(SUBTOTAL) ,SUM(TAXAMT),
SUM(SUBTOTAL + TAXAMT)
FROM SALESORDERHEADER
WHERE ONLINEORDERFLAG = 0
GROUP BY YEAR(ORDERDATE) WITH ROLLUP
;