Sql server 将数据分组
我有密码Sql server 将数据分组,sql-server,Sql Server,我有密码 SELECT TOP (100) PERCENT dbo.census.Group_Code, dbo.census.Gender, SUM(dbo.v_Courses.Dur_In_Hours) AS SumOf_Dur_In_Hours FROM dbo.v_Courses INNER JOIN dbo.census ON dbo.v_Courses.Job_Group
SELECT TOP (100) PERCENT dbo.census.Group_Code, dbo.census.Gender, SUM(dbo.v_Courses.Dur_In_Hours)
AS SumOf_Dur_In_Hours
FROM dbo.v_Courses INNER JOIN
dbo.census ON dbo.v_Courses.Job_Group_Code = dbo.census.Group_Code
WHERE (dbo.v_Courses.System = 'GEMS') AND (NOT (dbo.v_Courses.Course_ID LIKE 'UPS%')) AND
(dbo.v_Courses.First_Access_date BETWEEN CONVERT(DATETIME, '2012-01-01 00:00:00', 102) AND CONVERT(DATETIME, '2012-12-31 00:00:00',
102))
GROUP BY dbo.census.Group_Code, dbo.census.Gender
ORDER BY dbo.census.Group_Code
它的目的是给我的工作级别和性别的总小时数,但是每个性别的工作级别都返回相同的小时数。我想不出如何让他们分开
结果是这样的,但不可能每个性别都有相同的小时数
Job Gen Hours
11 F 10886.50417
11 M 10886.50417
16 F 33494.17222
16 M 33494.17222
16 U 33494.17222
21 F 19267.76361
21 M 19267.76361
导致重复的是性别如果在没有组的情况下运行查询,是否看到重复行?如果是这样,您可能需要在join/where中设置另一个限制。您可以在内部join中包含性别吗? 或者v_课程没有这个领域
SELECT TOP (100) PERCENT dbo.census.Group_Code, dbo.census.Gender, SUM(dbo.v_Courses.Dur_In_Hours)
AS SumOf_Dur_In_Hours
FROM dbo.v_Courses
INNER JOIN dbo.census
ON dbo.v_Courses.Job_Group_Code = dbo.census.Group_Code
AND dbo.v_Courses.Gender = dbo.census.Gender
WHERE (dbo.v_Courses.System = 'GEMS') AND (NOT (dbo.v_Courses.Course_ID LIKE 'UPS%')) AND
(dbo.v_Courses.First_Access_date BETWEEN CONVERT(DATETIME, '2012-01-01 00:00:00', 102) AND CONVERT(DATETIME, '2012-12-31 00:00:00',
102))
GROUP BY dbo.census.Group_Code, dbo.census.Gender
ORDER BY dbo.census.Group_Code
您使用的是MySQL还是SQL Server
TOP
在MySQL中不是语法。你确定那是MySQL吗?我认为它不支持TOP
关键字。我使用的是SQL Server。您可以发布一些示例数据和期望的结果吗?您可以为每个表和表结构发布一些数据吗?当我在没有组的情况下运行时,没有重复项,你建议使用哪种类型的john?我认为我们需要查看表结构和/或样本数据以提供更多帮助。实际上,是性别导致了重复。我想,我需要将两个表中的性别字段链接起来。谢谢大家的帮助。