ces*_*sco -3 sql t-sql sql-server group-by sum
我有一个名为Prospect的表,看起来像这样,我正在尝试对值求和,以便我只有 1 列表示 GEORGIA、ALABAMA、TEXAS,并且日期字段中的日期是最新的日期条目。
Date Sight Blck Knock Purchased Rate
2020-02-13 GEORGIA 11 6 54.55 0.0385
2020-02-13 GEORGIA 1 1 100 0.0035
2020-02-14 GEORGIA 2 0 0 0.007
2020-02-12 ALABAMA 2 0 0 0.007
2020-02-15 ALABAMA 2 0 0 0.007
2020-02-16 ALABAMA 2 1 50 0.007
2020-04-08 TEXAS 2 0 0 0.007
2020-04-18 TEXAS 2 0 0 0.007
2020-05-10 TEXAS 1 0 0 0.005
Run Code Online (Sandbox Code Playgroud)
我想要一个看起来像这样的结果集
Date Sight Blck Knock Purchased Rate
2020-02-14 GEORGIA 14 7 154.55 0.049
2020-02-16 ALABAMA 6 1 50 0.021
2020-05-10 TEXAS 5 0 0 0.019
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的,但总结不正确:
SELECT cast (Date as date)
, Sight
, SUM(CAST(Blck AS INT))
, SUM(CAST(Knock AS INT))
, SUM(CAST(Purchased AS money))
, SUM(CAST(Rate AS money))
FROM Prospect
GROUP BY cast(Date as Date)
, [Blck]
, [Knock]
, [Purchased]
, [Rate]
Run Code Online (Sandbox Code Playgroud)
感谢您的任何反馈
我想你想要:
max以获得最新的日期。group by sight 仅,对于您想要汇总金额的所有其他列。SELECT MAX(cast(Date as date))
, Sight
, SUM(CAST(Blck AS INT))
, SUM(CAST(Knock AS INT))
, SUM(CAST(Purchased AS money))
, SUM(CAST(Rate AS money))
FROM Prospect
GROUP BY Sight;
Run Code Online (Sandbox Code Playgroud)
真的需要这么多演员吗?如果您在表定义中使用了正确的数据类型,则以下内容将起作用:
SELECT MAX([Date])
, Sight
, SUM(Blck)
, SUM(Knock)
, SUM(Purchased)
, SUM(Rate)
FROM Prospect
GROUP BY Sight;
Run Code Online (Sandbox Code Playgroud)