Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
HGClubTec
Starting Member
12 Posts |
Posted - 2009-12-20 : 22:34:54
|
| I am trying to sum a couple of fields and I'm using a union to get information from a history table. Is there a way to sum the fields from the Union? Here's what I currently have that doesn't do that - but does give me the data I want.SELECTE.ID,E.Number + '-' + E.NumberSuffix AS FullNumber,E.LastName,TH.RecipMemberNumber,TH.RecipFirstName,TH.RecipLastName,THH.LocationName,--TM.BatchTypeENUM,SUM(TH.TicketTotal) AS TicketTotal,SUM(TH.TaxTotal) AS TaxTotal,SUM(TH.ServiceChargeTotal) AS SCTotal,SUM(TH.TicketTotal) + SUM(TH.TaxTotal) + SUM(TH.ServiceChargeTotal) AS Extension,T.Code,T.DescriptionFROMctcreceivables.dbo.TransHeader TH LEFT OUTER JOIN pos2000.dbo.TicketHeaderHistory THH ON TH.TicketHeaderID = THH.TicketHeaderIDLEFT OUTER JOIN ctcreceivables.dbo.TransMain TM ON TM.ID = TH.TransMainIDLEFT OUTER JOIN ctcpeople.dbo.Entity E ON TH.EntityID = E.IDLEFT OUTER JOIN ctcpeople.dbo.Type T ON E.TypeID = T.IDWHERET.TypeLevelEnum = 2AND CONVERT(nvarchar, TH.TransDate, 101) >= @StartDateAND CONVERT (nvarchar, TH.TransDate, 101) <= @EndDateAND TM.BatchTypeENUM <> 4Group By E.ID, E.Number, E.NumberSuffix, E.LastName, TH.RecipMemberNumber, TH.RecipFirstName, TH.RecipLastName, THH.LocationName, T.Code, T.DescriptionUNION SELECTE.ID,E.Number + '-' + E.NumberSuffix AS FullNumber,E.LastName,TH.RecipMemberNumber,TH.RecipFirstName,TH.RecipLastName,THH.LocationName,--TM.BatchTypeENUM,SUM(TH.TicketTotal) AS TicketTotal,SUM(TH.TaxTotal) AS TaxTotal,SUM(TH.ServiceChargeTotal) AS SCTotal,SUM(TH.TicketTotal) + SUM(TH.TaxTotal) + SUM(TH.ServiceChargeTotal) AS Extension,T.Code,T.DescriptionFROMctcreceivables.dbo.TransHeaderHistory TH LEFT OUTER JOIN pos2000.dbo.TicketHeaderHistory THH ON TH.TicketHeaderID = THH.TicketHeaderIDLEFT OUTER JOIN ctcreceivables.dbo.TransMainHistory TM ON TH.TransMainID = TM.TransMainIDLEFT OUTER JOIN ctcpeople.dbo.Entity E ON TH.EntityID = E.IDLEFT OUTER JOIN ctcpeople.dbo.Type T ON E.TypeID = T.IDWHERET.TypeLevelEnum = 2AND CONVERT(nvarchar, TH.TransDate, 101) >= @StartDateAND CONVERT(nvarchar, TH.TransDate, 101) <= @EndDateAND TM.BatchTypeENUM <> 4Group By E.ID, E.Number, E.NumberSuffix, E.LastName, TH.RecipMemberNumber, TH.RecipFirstName, TH.RecipLastName, THH.LocationName, T.Code, T.DescriptionORDER BY FullNumber, LocationName |
|
|
tkizer
Almighty SQL Goddess
38200 Posts |
|
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2009-12-20 : 23:28:17
|
Not sure what you query is doing, but since you are using LEFT JOIN to the table TransMainHistory and Type, you might want to place the 2 condition highlighted in RED at the join condition rather than WHERE clause. Placing it in the WHERE clause will change the effect of the LEFT JOIN to a INNER JOIN.FROMctcreceivables.dbo.TransHeaderHistory THLEFT OUTER JOIN pos2000.dbo.TicketHeaderHistory THH ON TH.TicketHeaderID = THH.TicketHeaderIDLEFT OUTER JOIN ctcreceivables.dbo.TransMainHistory TM ON TH.TransMainID = TM.TransMainIDLEFT OUTER JOIN ctcpeople.dbo.Entity E ON TH.EntityID = E.IDLEFT OUTER JOIN ctcpeople.dbo.Type T ON E.TypeID = T.IDWHERET.TypeLevelEnum = 2AND CONVERT(nvarchar, TH.TransDate, 101) >= @StartDateAND CONVERT(nvarchar, TH.TransDate, 101) <= @EndDateAND TM.BatchTypeENUM <> 4 KH[spoiler]Time is always against us[/spoiler] |
 |
|
|
|
|
|
|
|