0

ここに画像の説明を入力

C1 - コンペティション 1、C2 - コンペティション 2、C3 - コンペティション 3。C1Points - Compeletion1Points

このテーブルは、さまざまな種類のコンテストに参加しているさまざまなカテゴリの学生のポイント テーブルを表しています。

列 C1、C2、C3 は、学生がその大会に参加している値が「1」の場合、大会の名前です。「0」の場合、彼は参加していません。

S1 to S15                     : Student Names
C1 ,C2,C3                     : Competition Names
Section                       : Indicates category of that particular student
C1points, C2points, C3points  : Points received by the particular student in that particular competition

ここでは、ポイントと競技名の降順で各セクションをグループ化します。

注意: C1 は、競合 1、C2 - 競合 2、C3 - 競合 3 を変更する必要があります。

参照してください: http://www.sqlfiddle.com/#!2/20920/1

私の最終的な出力は次のようになります

ここに画像の説明を入力

4

3 に答える 3

1

セクション 1 のみ。セクション 2 とセクション 3 のロジックも同様に実装できます。

select *
from
(
select s1.ID,
s1.Name,
'Competition 1' as Competition,
s1.C1Points as Points
from students s1
where SECTION='Section1'
and ifnull(s1.C1,'')<>''
and s1.C1Points<>0
union
select s2.ID,
s2.Name,
'Competition 2' as Competition,
s2.C2Points as Points
from students s2
where s2.SECTION='Section1'
and ifnull(s2.C2,'')<>''
and s2.C2Points<>0
union
select s3.ID,
s3.Name,
'Competition 3' as Competition,
s3.C3Points as Points
from students s3
where s3.SECTION='Section1'
and ifnull(s3.C2,'')<>''
and s3.C3Points<>0
)t
order by t.points desc,t.Competition desc

SQLフィドル

于 2013-08-05T11:52:58.797 に答える