0

私はコードを持っています

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

重複を引き起こしているのは性別です

4

2 に答える 2

1

グループなしでクエリを実行すると、行が重複しますか?もしそうなら、おそらくjoin/whereに別の制限が必要です。

于 2013-02-14T15:58:48.317 に答える
1

インナージョインに性別を含めることはできますか?またはv_coursesにはこのフィールドがありませんか?

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
于 2013-02-14T16:51:56.060 に答える