TSQL使用Group By连接到另一个表
我目前拥有的伪代码是 成本+成本税=实际成本 但是,我需要: 成本+税费-总消费折扣=实际成本 我在连接3个表时有一个SQL Select语句,用于计算成本+税收=成本实际值TSQL使用Group By连接到另一个表,tsql,join,group-by,Tsql,Join,Group By,我目前拥有的伪代码是 成本+成本税=实际成本 但是,我需要: 成本+税费-总消费折扣=实际成本 我在连接3个表时有一个SQL Select语句,用于计算成本+税收=成本实际值 SELECT dbo.XMP_EventUsers.ID, dbo.XMP_EventUsers.EventID, dbo.XMP_EventUsers.UserID, CONVERT(VARCHAR(20),dbo.XMP_EventUsers.DateCreated, 100) AS DateCreated,
SELECT dbo.XMP_EventUsers.ID, dbo.XMP_EventUsers.EventID, dbo.XMP_EventUsers.UserID,
CONVERT(VARCHAR(20),dbo.XMP_EventUsers.DateCreated, 100)
AS DateCreated, CONVERT(VARCHAR, dbo.XMP_Event.Cost, 1) AS Cost, dbo.Users.FirstName, dbo.Users.LastName,
dbo.XMP_Event.Cost + dbo.XMP_Event.CostTax - dbo.XMP_EventUsers.Paid AS Outstanding,
dbo.XMP_Event.Cost + dbo.XMP_Event.CostTax AS CostActual
FROM dbo.XMP_Event INNER JOIN
dbo.XMP_EventUsers ON dbo.XMP_Event.ID = dbo.XMP_EventUsers.EventID INNER JOIN
dbo.Users ON dbo.XMP_EventUsers.UserID = dbo.Users.UserID
另一个表记录应用于总成本的折扣。此查询汇总要应用的折扣
SELECT UserID, SUM([Amount]) AS Amount
FROM [dbo].[XMP_EventPromoUsers]
GROUP BY UserID
如何将第二个结果与第一个结果合并,以便在select语句中为每个记录减去最终成本的折扣总数
谢谢你的帮助
-R
下面是答案1的示例结果
查询1返回:
ID|EventID|UserID|DateCreated|Cost|FirstName|LastName|Outstanding|CostActual|FinalValue|
51|14-----|41----|Aug 11 2011|0.00|John-----|Smith---|-120-------|0.00------|-10-------|
问题2
UserID-|Amount----|
41-----|10--------|
96-----|30--------|
谢谢,但是,第二个查询本身返回两个结果,但是您的查询只返回一条记录?有什么想法吗?请显示您的查询返回的两条记录和我的查询返回的一条记录。我刚刚将结果作为编辑发布在问题部分。顺便说一句,是的,这个项目的价格是0,有10的折扣。这不是问题。嗯,查询2的结果只显示2个字段,我的查询有更多字段。但简而言之,我的查询应该返回的是user、event、eventuser和eventpromotionusers的每个组合的记录。似乎有两条记录符合本案例用户ID的41和96。为了澄清,第二次查询返回了哪些记录,返回了Sum([Amount])?“第二次查询返回了哪些记录,返回了Sum([Amount])?”是的,正确。两个结果。用户ID 41和96。
SELECT
dbo.XMP_EventUsers.ID, dbo.XMP_EventUsers.EventID, dbo.XMP_EventUsers.UserID,
CONVERT(VARCHAR(20),dbo.XMP_EventUsers.DateCreated, 100) AS DateCreated,
CONVERT(VARCHAR, dbo.XMP_Event.Cost, 1) AS Cost,
dbo.Users.FirstName, dbo.Users.LastName,
dbo.XMP_Event.Cost + dbo.XMP_Event.CostTax - dbo.XMP_EventUsers.Paid AS Outstanding,
dbo.XMP_Event.Cost + dbo.XMP_Event.CostTax AS CostActual,
dbo.XMP_Event.cost + dbo.XMP_Event.CostTax - Users2.Amount AS FinalValue
FROM
dbo.XMP_Event
INNER JOIN dbo.XMP_EventUsers
ON dbo.XMP_Event.ID = dbo.XMP_EventUsers.EventID
INNER JOIN dbo.Users
ON dbo.XMP_EventUsers.UserID = dbo.Users.UserID
INNER JOIN (SELECT UserID, SUM([Amount]) AS Amount
FROM [dbo].[XMP_EventPromoUsers]
GROUP BY UserID) Users2
ON dbo.Users.UserID = Users2.UserID