2011-10-26 11 views
3

私はデータシステムの人間として学校のシステムに取り組んでいます。最新の報告書では、私はテストに参加する学生についてのデータを送る必要があります。簡単に。複数のエントリがある行を見つけようとしているSQL

問題は、教師や管理者が複数の特別なニーズを持つ学生に関するデータを入力したときに、複数の障害を指定することによって正しいことを記入することがあり、時には特別な必要ごとに個別に記入することがあります。例えば、学生は学習障害と感情障害を持つかもしれず、管理者は1つではなく2つのエントリーを作るだろう。

select 

    stuff 
    ,morestuff 
    ,CASE 
     When [**a student is in the list multiple times**] 
      Then '**Multiple Disabilities**' 
     When '01' 
      Then 'Blind' 

など:私は全体のことを気にしないように長いです

私のクエリは、このような何かを必要とします。

私の頭の中では簡単だと思いますが、コードにコミットしようとすると、それは崩壊します。

+1

どのRDBMS?可能であれば、関係するテーブルの構造を少なくとも投稿してください。 – Yuck

答えて

4

これは、どのRDBMSでもかなり一般的です。これは、あなたの値01を保持していて、何らかの種類のstudentidの列があると仮定する「disabilityname」という列があることを前提としています。

サブクエリCOUNT(*)に何度も出席する学生はMultiple Disabilitiesを返し、それ以外の場合はdisabilitynameの列を返します。

SELECT 
    stuff, 
    morestuff, 
    CASE 
    WHEN cnt.numdisabilities > 1 THEN 'Multiple Disabilities' 
    ELSE disabilityname 
    END as disabilityname 
FROM 
    tbl JOIN (
    SELECT studentid, COUNT(*) AS numdisabilities FROM tbl GROUP BY studentid 
) cnt ON tbl.studentid = cnt.studentid 
+0

素晴らしい、ありがとう百万円 –

+0

@CorranHornそれはあなたのために動作することを願っています。私は何が起こっているのか少しの説明を追加しました。 –

関連する問題