Sql server,Group by 应用,该怎么处理
Sql server,Group by 应用
Sql代码如下:
执行结果如下:

现在我想把RouteCode列名相同的金额合并,如:RouteCode=61003,金额=13766.250000000+13923.200000000。
求大神解救。。Sql遇见怎么搞。不用group by么?
------解决方案--------------------
你要的结果是什么样子,所谓的金额合并,是合并后routcode为61003只显示一笔,还是依旧显示两笔,但金额已经加总到一起了
------解决方案--------------------
------解决方案--------------------
如果你要routcode为61003只显示一笔,但是他所对应的时间有两个时间,那你只能折衷现实这两个时间中的一个,用max()或者min(),取当中的最大值或最小值做为代表了。
------解决方案--------------------
Sql代码如下:
select AA3.RouteCode as Routecode,AA3.RouteID as RouteID,DataOfDate as 时间
,sum(A.CardMoney9+A.CardMoney5+A.CardMoney6+A.CardMoney7+A.CardMoney8) as 金额
from BUS_ICReceiptDocLine as A
left join [BUS_ICReceiptDoc] as A2 on (A.[ICReceiptDoc] = A2.[ID])
left join V_BUS2_CarinfoHistory as AA2 on (A.CarInfoHistory=AA2.CarHisToryID)
left join V_BUS2_Carinfo as A4 on (AA2.CarID=A4.CarID)
left join V_BUS2_RouteHistory as AA3 on (AA2.RouteHistoryID = AA3.RouteHistoryID)
left join V_BUS2_Route as AA6 ON(AA3.RouteID=AA6.RouteID)
left join BUS_ICReceiptDocType as KK on(A2.[DocumentType]=KK.ID)
where (A2.[DataOfDate] >= '2014-3-1 0:00:00' and A2.DataOfDate <= '2014-3-5 23:59:59')
and kk.[TransferType]=0
group by AA3.RouteCode,AA3.RouteName,AA3.RouteID,a2.DataOfDate
执行结果如下:
现在我想把RouteCode列名相同的金额合并,如:RouteCode=61003,金额=13766.250000000+13923.200000000。
求大神解救。。Sql遇见怎么搞。不用group by么?
------解决方案--------------------
你要的结果是什么样子,所谓的金额合并,是合并后routcode为61003只显示一笔,还是依旧显示两笔,但金额已经加总到一起了
------解决方案--------------------
select AA3.RouteCode as Routecode/*,AA3.RouteID as RouteID,DataOfDate as 时间 */
,sum(A.CardMoney9+A.CardMoney5+A.CardMoney6+A.CardMoney7+A.CardMoney8) as 金额
from BUS_ICReceiptDocLine as A
left join [BUS_ICReceiptDoc] as A2 on (A.[ICReceiptDoc] = A2.[ID])
left join V_BUS2_CarinfoHistory as AA2 on (A.CarInfoHistory=AA2.CarHisToryID)
left join V_BUS2_Carinfo as A4 on (AA2.CarID=A4.CarID)
left join V_BUS2_RouteHistory as AA3 on (AA2.RouteHistoryID = AA3.RouteHistoryID)
left join V_BUS2_Route as AA6 ON(AA3.RouteID=AA6.RouteID)
left join BUS_ICReceiptDocType as KK on(A2.[DocumentType]=KK.ID)
where (A2.[DataOfDate] >= '2014-3-1 0:00:00' and A2.DataOfDate <= '2014-3-5 23:59:59')
and kk.[TransferType]=0
group by AA3.RouteCode--,AA3.RouteName,AA3.RouteID,a2.DataOfDate
------解决方案--------------------
如果你要routcode为61003只显示一笔,但是他所对应的时间有两个时间,那你只能折衷现实这两个时间中的一个,用max()或者min(),取当中的最大值或最小值做为代表了。
select AA3.RouteCode as Routecode,min(AA3.RouteID) as RouteID,min(DataOfDate) as 时间
,sum(A.CardMoney9+A.CardMoney5+A.CardMoney6+A.CardMoney7+A.CardMoney8) as 金额
from BUS_ICReceiptDocLine as A
left join [BUS_ICReceiptDoc] as A2 on (A.[ICReceiptDoc] = A2.[ID])
left join V_BUS2_CarinfoHistory as AA2 on (A.CarInfoHistory=AA2.CarHisToryID)
left join V_BUS2_Carinfo as A4 on (AA2.CarID=A4.CarID)
left join V_BUS2_RouteHistory as AA3 on (AA2.RouteHistoryID = AA3.RouteHistoryID)
left join V_BUS2_Route as AA6 ON(AA3.RouteID=AA6.RouteID)
left join BUS_ICReceiptDocType as KK on(A2.[DocumentType]=KK.ID)
where (A2.[DataOfDate] >= '2014-3-1 0:00:00' and A2.DataOfDate <= '2014-3-5 23:59:59')
and kk.[TransferType]=0
group by AA3.RouteCode--,AA3.RouteName,AA3.RouteID,a2.DataOfDate
------解决方案--------------------
select AA3.RouteCode as Routecode,AA3.RouteID as RouteID,MAX(DataOfDate) as 时间
,sum(A.CardMoney9+A.CardMoney5+A.CardMoney6+A.CardMoney7+A.CardMoney8) as 金额
from BUS_ICReceiptDocLine as A
left join [BUS_ICReceiptDoc] as A2 on (A.[ICReceiptDoc] = A2.[ID])
left join V_BUS2_CarinfoHistory as AA2 on (A.CarInfoHistory=AA2.CarHisToryID)