[英]Show totals in last row of query
我想显示最后两列的总数,但无法缝合以获取正确的代码。 这是代码。
declare @FromDate as datetime
declare @ToDate as datetime
set @FromDate='1/1/2018'
set @ToDate='1/31/2018'
Select
OrderMain.OrderNumber,
OrderMain.OrderDate,
OrderMain.TotalMiles,
OFAddStop.FeeValue AS NumberStops
From
Ordermain with (readuncommitted)
Left Outer Join Customer with (readuncommitted) on Ordermain.CustomerID=Customer.CustomerID
Left outer join OrderFee OFAddStop with (readuncommitted) on OFAddStop.OrderID=OrderMain.OrderID
and OFAddStop.Sequence=9 and OFAddStop.SubSequence=6
Where
Customer.CustomerCode IN('36716')
and OrderMain.OrderDate >=@FromDate
and OrderMain.OrderDate <=@ToDate
and OrderMain.OrderStatus in ('N','A','I','P')
这是查询的示例
OrderNumber OrderDate TotalMiles NumberStops
10747511 01/02/18 280 6
10750287 01/03/18 118 4
最后一行应如下所示
OrderNumber OrderDate TotalMiles NumberStops
10747511 01/02/18 280 6
10750287 01/03/18 118 4
Total 398 10
有人可以告诉我实现此目标的正确方法吗?
在SQL Server中,可以使用GROUPING SETS
进行此操作,但是需要一个聚合查询:
Select om.OrderNumber, om.OrderDate,
SUM(om.TotalMiles) as TotalMiles,
SUM(oaf.FeeValue) as NumberStops
From Ordermain om Join
Customer c
on om.CustomerID = c.CustomerID Left outer join
OrderFee oaf
on oaf.OrderID = om.OrderID and
oaf.Sequence = 9 and oaf.SubSequence = 6
Where c.CustomerCode in ('36716') and
om.OrderDate >= @FromDate
om.OrderDate <= @ToDate and
om.OrderStatus in ('P', 'A', 'I', 'N') -- couldn't resist
group by grouping sets ( (om.OrderNumber, om.OrderDate), () );
笔记:
join
到该表应定期join
。 如果数据库接受With
子句。
declare @FromDate as datetime
declare @ToDate as datetime
set @FromDate='1/1/2018'
set @ToDate='1/31/2018'
With
records as (
Select
cast(OrderMain.OrderNumber as varchar(32)) OrderNumber,
OrderMain.OrderDate,
OrderMain.TotalMiles,
OFAddStop.FeeValue AS NumberStops
From
Ordermain with (readuncommitted)
Left Outer Join Customer with (readuncommitted) on
Ordermain.CustomerID=Customer.CustomerID
Left outer join OrderFee OFAddStop with (readuncommitted) on
OFAddStop.OrderID=OrderMain.OrderID
and OFAddStop.Sequence=9 and OFAddStop.SubSequence=6
Where
Customer.CustomerCode IN('36716')
and OrderMain.OrderDate >=@FromDate
and OrderMain.OrderDate <=@ToDate
and OrderMain.OrderStatus in ('N','A','I','P')
)
Select
OrderNumber,
OrderDate,
TotalMiles,
NumberStops
From
records
Union All
Select
'Total',
null,
sum(TotalMiles),
sum(NumberStops)
From
records
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.