TSQL 使用 Group By 连接到另一个表

发布于 2024-12-13 14:40:34 字数 1376 浏览 1 评论 0原文

我目前拥有的伪代码是

Cost + CostTax = CostActual

但是,我需要它是:

Cost + Tax - TotalSumDiscounts = CostActual

我在连接 3 个表时有一个 SQL Select 语句,用于计算 Cost + Tax = CostActual。

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--------|

The pseudo code of what I currently have is

Cost + CostTax = CostActual

However, I need it to be:

Cost + tax - totalSumDiscounts = CostActual

I have a SQL Select statement at joins 3 tables that calculates cost + tax = CostActual.

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

Another table records discounts to be applied to the total cost. This query totals up the discounts to be applied.

    SELECT UserID, SUM([Amount]) AS Amount
FROM [dbo].[XMP_EventPromoUsers]
GROUP BY UserID

How do I join the 2nd results to the first so that the total number of discount is minuses from the final cost in the select statement for each record?

Thanks for your help!

-R

Example results below for answer 1

Query 1 returns:

ID|EventID|UserID|DateCreated|Cost|FirstName|LastName|Outstanding|CostActual|FinalValue|
51|14-----|41----|Aug 11 2011|0.00|John-----|Smith---|-120-------|0.00------|-10-------|

Query 2

UserID-|Amount----|

41-----|10--------|

96-----|30--------|

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

娇妻 2024-12-20 14:40:34
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
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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文