Student ( STU) & Programs ( PGM) テーブルをクエリし、 ごとに複数のレコードIDがある場合でも、 ごとに1 つの結合されたレコードを返す必要があります。を使おうと思ったのですが、集計関数でもGROUP BY句でもないので、 での 使い方がわかりません。PGMIDGROUP BY STU.ID, STU.FN, STU.LNPGM.CDSELECT
テーブルにはPGMレコードがある場合とない場合があります。以下の私のクエリは、これらの可能な結果を返します。
PGMレコードがない場合、1 つの結果のみIDが返され、PGM.CD列がNULL(または''ごとにCASE) 返されます。PGMテーブルにレコードが 1 つしかなく、PGM.CD = 200('DLA'ごとにCASE) の場合、ごとに 1 つの結果のみIDが返されます。PGMテーブルにレコードが 1 つしかなく、PGM.CD <> 200(''ごとにCASE) の場合、ごとに 1 つの結果のみIDが返されます。PGMテーブルに ( ごとに) 複数のレコードがある場合ID、つまり 121、200、156 の場合、 ごとに複数の行が生成されますID。
ID列の結果を組み合わせて、ごとに 1 行のみを返すクエリが必要PGM.CDです。PGM.CD列は''or 200( 'DLA'per CASE)のみを返す必要があります
SELECT STU.ID, STU.FN, STU.LN,
CASE PGM.CD
WHEN '200' THEN 'DLA'
ELSE ''
END
FROM STU
LEFT JOIN PGM
ON STU.ID = PGM.PID
これは私のクエリが返すものです(変更なし):CASEPGM.CD
STU.ID STU.FN STU.LN PGM.CD
1000 Bruce Wayne NULL
1001 Clark Kent 200
1002 Barry Allen 151
1002 Barry Allen 101
1003 Hal Jordan 126
1003 Hal Jordan 200
1003 Hal Jordan 101
これは私のクエリが返すものです(変更CASEあり)PGM.CD:
STU.ID STU.FN STU.LN PGM.CD
1000 Bruce Wayne
1001 Clark Kent DLA
1002 Barry Allen
1002 Barry Allen
1003 Hal Jordan
1003 Hal Jordan DLA
1003 Hal Jordan
これを返す必要があります:
STU.ID STU.FN STU.LN PGM.CD
1000 Bruce Wayne
1001 Clark Kent DLA
1002 Barry Allen
1003 Hal Jordan DLA
これがすべて理にかなっていることを願っています。助けてくれてありがとう。
アンソニー