【发布时间】:2014-03-19 05:40:15
【问题描述】:
我有一个类似于以下的 (SQL Server) 表:
销售总结
年份 |团队 |人 |销售人员 |团队销售/年
2013 1 Jim 10 美元 ??
2013 1 安娜 ?
2013 2 约翰 8 美元 ??
2013 3 托德 4 美元 ??
2013 3 艾伦 1 美元 ??
2014 3 艾伦 22 美元 ??
我正在尝试总结这个示例 SalesSummary 表并将正确的值插入到 Team Sales 列中。在此示例中,我希望第一列和第二列 10 美元,第三列 8 美元,第 4/5 列 5 美元和第 6 列插槽 22 美元。原谅我对 SQL 的无知,但我认为这是一个糟糕的解决方案,如下所示:
UPDATE SalesSummary SET TeamSales = sum.TeamSales
FROM (SELECT Team, Year, SUM(PersonSales) OVER (Partition By Team, Year) as TeamSales)
FROM SalesSummary
GROUP BY Team, Year, PersonSales
) AS sum, SalesSummary as SS
WHERE sum.Team = ss.Team AND sum.Year = ss.Year
我希望有人能够展示如何最好地执行此类更新。我感谢任何帮助、提示或示例。如果这很明显,请道歉。
【问题讨论】:
-
您使用的是什么数据库? SQL Server 还是 MySQL?
-
SQL 服务器。为小姐道歉。
-
顺便说一句,创建这样的列是完全没有必要的。如果您始终可以使用您提供的 SQL 语法计算值,为什么还需要此列?
标签: sql sql-server optimization