2013-02-13 13 views
0

我有老師的表,9列從數位變量

TeacherID, TeacherName, Reception, Year1, Year2, Year3, Year4, Year5, ALevel 

我需要連接的最小和最大位值(接待 - Year5)選擇的最小值和最大值1,然後在選擇顯示它語句,所以它的輸出爲(在這種情況下,第1年,第2年和第3年被勾選):Y1 - Y3。

SELECT 
    TeacherID, TeacherName, 
    Reception + Year1 + Year2 + Year3 + Year4 + Year5 + ALevel as 'KeyStage' 
FROM Teachers 

有關如何做到這一點的任何想法?

非常感謝,馬特

回答

2
SELECT 
    TeacherID, 
    TeacherName, 
    CASE 
     WHEN Reception > 0 THEN 'Re' 
     WHEN Year1 > 0 THEN 'Y1' 
     WHEN Year2 > 0 THEN 'Y2' 
     WHEN Year3 > 0 THEN 'Y3' 
     WHEN Year4 > 0 THEN 'Y4' 
     WHEN Year5 > 0 THEN 'Y5' 
     WHEN ALevel > 0 THEN 'AL' 
     ELSE '' END 
    + ' - ' + 
    CASE 
     WHEN ALevel > 0 THEN 'AL' 
     WHEN Year5 > 0 THEN 'Y5' 
     WHEN Year4 > 0 THEN 'Y4' 
     WHEN Year3 > 0 THEN 'Y3' 
     WHEN Year2 > 0 THEN 'Y2' 
     WHEN Year1 > 0 THEN 'Y1' 
     WHEN Reception > 0 THEN 'Re' 
     ELSE '' END AS Range 
FROM 
    Teachers 
+0

完美,謝謝。 – dynamicuser 2013-02-13 15:11:05

3

試試這個; First CaseReception起始MinYearSecond CaseALevel起始MaxYear。另外補充else針對每一種情況下,以避免越來越空,如果他們都不是1

SELECT TeacherID, TeacherName, Reception, 
     Case when Reception = 1 then 'R' 
      when Year1 = 1 then 'Y1' 
      ... 
      when ALevel = 1 then 'AL' 
      else '' 
     End + ' - ' 
     Case when ALevel = 1 then 'AL' 
      when Year5 = 1 then 'Y5' 
      ... 
      when Reception= 1 then 'R' 
      else '' 
     End As KeyStage 
FROM Teachers 
+0

您好@Beth,感謝您糾正錯字。 – Kaf 2013-02-13 17:25:31

0

我不會。在你的客戶端代碼中執行(php,c#)。你的規範也不清楚,如果選擇第1,3和5年,而第2和第4年則不是?

+0

上述情況不會發生,如果教師介於1年級和4年級之間,教師可以在3年級工作,天氣3年是否打勾。感謝您的建議。 :) – dynamicuser 2013-02-13 15:12:10

0

這應該適合你,我沒有測試過它,你可能需要做一些改變。請注意,如果沒有檢查位,則會得到一個空值。我會使用空值,因爲如果沒有檢查到任何東西,那麼你就不會有這個奇怪的短劃線,並且你可以使用isnull將值更改爲你所希望的未選擇年份。

SELECT TeacherID, 
    TeacherName, 
    case when Reception = 1 then 'R' 
     when Year1 = 1 then 'Y1' 
     when Year2 = 1 then 'Y2' 
     when Year3 = 1 then 'Y3' 
     when Year4 = 1 then 'Y4' 
     when Year5 = 1 then 'Y5' 
     when ALevel = 1 then 'AL' 
     else null end + ' - ' + 
    case when Reception = 1 then 'R' 
     when Year1 = 1 then 'Y1' 
     when Year2 = 1 then 'Y2' 
     when Year3 = 1 then 'Y3' 
     when Year4 = 1 then 'Y4' 
     when Year5 = 1 then 'Y5' 
     when ALevel = 1 then 'AL' 
     else null end as 'KeyStage' 
FROM Teachers