2013-02-14 39 views
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 

這是如果您運行的查詢,而不羣,你會看到重複的線條,是造成重複的

+0

您使用的是MySQL還是SQL Server?在MySQL中,「TOP」不是語法。 – Taryn 2013-02-14 15:48:52

+0

你確定這是MySQL嗎?我不認爲它支持'TOP'關鍵字。 – Barmar 2013-02-14 15:48:53

+0

SQL Server是我正在使用的 – Andrew 2013-02-14 15:50:56

回答

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 
1

的性別?如果是這樣的話,你可能需要在加入/其中的另一個限制。

+0

當我運行它沒有組沒有沒有重複,你是什麼樣的約翰建議 – Andrew 2013-02-14 15:59:19

+0

我想我們需要看到一個表結構和或樣本數據來幫助更多。 – bendataclear 2013-02-14 16:01:37

+0

其實它的造成重複的性別 – Andrew 2013-02-14 16:04:42