【问题标题】:Calculated column within a JOIN using T-SQL [closed]使用 T-SQL 的 JOIN 中的计算列 [关闭]
【发布时间】:2013-04-11 17:19:44
【问题描述】:

我想显示一个人提出的申请总数的总和。

我试过这个:

SELECT DISTINCT custID, firstName, AppID, AppDate, Amount
FROM CustTable
JOIN AppTable ON custID = AppID

我每个客户有很多行,我想对每个客户的总申请量求和

目前我看到的是这样的:

1 | Jon | APP_1 | 200 
1 | Jon | APP_2 | 200
1 | Jon | APP_3 | 200
1 | Jon | APP_4 | 200

但我想要(最好有日期范围):

1 | Jon | APP_1 | 800

【问题讨论】:

  • 报告中真的需要APP_1吗?

标签: sql sql-server tsql group-by aggregate-functions


【解决方案1】:

你可以这样做:

select custID, firstName, sum(Amount)
FROM CustTable
JOIN AppTable
ON custID = AppID
group by custID, firstName

这将返回:

1 | Jon | 800

此外,您可以有这样的日期范围:

select custID, firstName, sum(Amount), 
       min(AppDate) firstDate, max(AppDate) lastDate, 
FROM CustTable
JOIN AppTable
ON custID = AppID
group by custID, firstName

这将返回如下内容:

1 | Jon | 800 | 2013-01-01 | 2013-01-28

【讨论】:

  • APP_1 到 APP_N 似乎是 AppId,而不是日期...
  • @Quandary 适当地指出,我读这个问题太快了。刚刚修好了
  • 是的,我也遇到过;)这是一个愚蠢的问题:)
【解决方案2】:

根据您表中的不同,我假设您也希望将其按 AppDate 分组:

SELECT custID, firstName, AppID, AppDate, SUM(Amount) AS Amount 
FROM CustTable
JOIN AppTable
ON custID = AppID

GROUP BY custID, firstName, AppID, AppDate

您的结果列表没有 AppDate,因此当不按 AppDate 对值进行分组时,您必须不这样做:

SELECT custID, firstName, AppID, SUM(Amount) AS Amount 
FROM CustTable
JOIN AppTable
ON custID = AppID

GROUP BY custID, firstName, AppID

如果你愿意的话

1 | Jon | APP_1 | 800 

在您的示例中,以字母顺序的第一个应用程序 ID 作为名称,它会是这样的

SELECT custID, firstName, MIN(AppID) AS AppID, SUM(Amount) AS Amount 
FROM CustTable
JOIN AppTable
ON custID = AppID

GROUP BY custID, firstName

但老实说,在结果中包含 APP_1 并没有多大意义。

【讨论】:

    【解决方案3】:

    这是一个基本的group by 查询:

    SELECT custID, COUNT(*) as Num, SUM(Amount) as TotalAmount
    FROM CustTable JOIN AppTable
         ON custID = AppID
    group by custId
    

    但是,我没有看到输出中第三列“APP1”在做什么。

    【讨论】:

    • 我在你的输出中没有看到 firstName
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多