【发布时间】:2019-08-09 18:59:07
【问题描述】:
我正在使用 SQL Server 中的数据库工作,其中包含以美元计的季度员工销售配额。我从中检索信息的表包含以下列:
- SalesQuotaKey (PK, int, NOT NULL)
- 员工密钥(FK,int,NOT NULL)
- DateKey (FK, int, NOT NULL)
- 日历年(smallint,NOT NULL)
- 日历季度(tinyint,NOT NULL)
- SalesAmountQuota(金钱,非空)
- 日期(日期时间,非空)
包含 SalesAmountQuota 的列显示季度配额。
下面所述的一个 EmployeeID 的示例数据和预期结果 Employeekey Datekey 年份 季度 SalesAmountquota 日期
1 272 20101229 2010 4 28000,00 2010-12-29 00:00:00.000
11 272 20110331 2011 1 7000,00 2011-03-31 00:00:00.000
21 272 20110701 2011 3 91000,00 2011-07-01 00:00:00.000
31 272 20110929 2011 3 140000,00 2011-09-29 00:00:00.000
41 272 20111229 2011 4 70000,00 2011-12-29 00:00:00.000
54 272 20120330 2012 1 154000,00 2012-03-30 00:00:00.000
68 272 20120630 2012 2 107000,00 2012-06-30 00:00:00.000
82 272 20120928 2012 3 58000,00 2012-09-28 00:00:00.000
96 272 20121228 2012 4 263000,00 2012-12-28 00:00:00.000
113 272 20130330 2013 1 116000,00 2013-03-30 00:00:00.000
130 272 20130630 2013 2 84000,00 2013-06-30 00:00:00.000
147 272 20130929 2013 3 187000,00 2013-09-29 00:00:00.000
emp key MaxSalesQuota MinSalesquota
272 582000,00 28000,00
但是,我想创建一个概览,显示每个 EmployeeID 的有史以来最高的年度销售配额和有史以来最低的销售配额(仅适用于所有四个季度配额都包含一个值)
我设法使用以下语句找到了每位员工的最高和最低季度销售配额,但我无法创建一个检索每位员工最高和最低年度配额的语句。 谁能帮帮我?非常感谢您的帮助。
SELECT A.EmployeeKey,
MAX(A.SalesAmountQuota) as MaxQuota,
Min(B.SalesAmountQuota) as MinQuota
FROM FactSalesQuota A, FactSalesQuota B
WHERE A.SalesAmountQuota = B.SalesAmountQuota
GROUP BY A.EmployeeKey
ORDER BY A.EmployeeKey
【问题讨论】:
-
向我们展示一些示例表数据和预期结果 - 都是格式化文本,而不是图像。
-
另一方面,如果您想按年份,似乎只需将年份添加到您的
SELECT和GROUP By。另外,您为什么要在同一列上将表连接到自身?这没有任何意义。 -
@Larnu 确实,加入没有意义,我的错。我不希望按年计算,我只想检索每个员工的最高和最低配额,这意味着它需要检索总和最高和最低的年份的 4 个季度配额的总和。
-
@jarlh 要求的样本数据和预期结果将真正帮助我们理解这里。
标签: sql sql-server