【发布时间】:2016-05-12 22:40:09
【问题描述】:
我需要创建一个显示各种总计的视图。
我有两张桌子。一个带有用户 ID 和工作申请的状态代码。另一个具有 UserID 和 4 个包含布尔 0/1 的列。这些列中的每一个都表示一项工作技能(如跑步、跳跃、投掷、攀爬)。该视图只需要显示每个工作技能的总数,一次用于正在进行的应用程序,一次用于已完成的应用程序。我无法确定每个技能的分组依据和选择列。
User 表有 ID(int) 和 ApplicationStatus(varchar4)。
应用状态为:
- 0000 如果尚未启动
- 0500 正在进行时
- 完成时为 1000。
JobSkills 表有:
ID、用户表的匹配 UserID 和 4 个 JobSkill 列:JobSkill_1、JobSkill_2、JobSkill_3 和 JobSkill_4,每个都定义为整数,如果用户具有该技能,则包含 1。
该视图应该显示以下内容的摘要:
- 有多少用户的状态为 0000
- 有多少状态为 0500
- 有多少状态为 1000
- 有多少状态为 1000 且 JobSkill_1 =1
- 有多少状态为 1000 且 JobSkill_2 =1
- 有多少人的状态为 1000 并且 JobSkill_3 =1
- 以及有多少状态为 1000 且 JobSkill_4 =1
类似:
SELECT
[UserID],
SUM(JobSKill_1) as Run,
SUM(JobSkill_2) AS Jump,
SUM(JobSkill_3) AS Throw,
SUM(JobSkill_4) AS Climb
FROM [dbo].[tblJobSkills]
GROUP BY [UserID] WITH ROLLUP
【问题讨论】:
-
如果您发布您编写的代码,我们可以帮助您找出其中的任何问题!
-
请发布您的表格定义、表格中存储的示例数据以及您想要获取的数据的示例。
-
我们能否得到一个明确的“条件聚合”答案来将所有这些标记为重复项?
-
@Kyle Hale 如果我能理解确切的要求,我会尝试给出明确的答案,但问题似乎自相矛盾(参见上面给出的示例和要求描述)
-
@Alex 你的答案是正确的,如果约翰知道如何编写他不会在 SO 上发布的查询。
标签: sql-server view group-by