0

9列の教師のテーブルがあります

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

最小ビット値と最大ビット値(Reception-Year5)を1と連結し、それをselectステートメントに表示して、出力が次のようになるようにする必要があります(この場合、Year 1、2、および3にチェックマークが付いています):Y1-Y3。

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

これを行う方法についてのアイデアはありますか?

どうもありがとう、マット

4

4 に答える 4

3

これを試して; forFirst Caseから開始およびforから開始。また、いずれも1でない場合にヌルにならないように、ケースごとに追加します。Reception MinYearSecond CaseALevelMaxYearelse

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
于 2013-02-13T14:41:55.270 に答える
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
于 2013-02-13T14:44:45.460 に答える
0

私はしません。クライアントコード(php、c#など)で実行します。あなたの仕様も明確ではありません。1年目、3年目、5年目がチェックされ、2年目と4年目がチェックされていない場合はどうなりますか?

于 2013-02-13T14:43:06.637 に答える
0

これはあなたのために働くはずです、私はそれをテストしていません、そしてあなたはいくつかの変更をする必要があるかもしれません。チェックされたビットがない場合は、null値を取得することに注意してください。何もチェックされていない場合は、この奇妙なダッシュがなく、isnullを使用して、選択されていない年数の間、値を必要な値に変更できるため、nullを使用します。

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
于 2013-02-13T14:55:10.380 に答える