我需要查询 Student( STU) 和 Programs( PGM) 表并返回一个组合记录ID,即使每个有多个PGM记录ID。我考虑过使用GROUP BY STU.ID, STU.FN, STU.LN,但后来我不确定如何在 中使用PGM.CD,SELECT因为它不是聚合函数或在 GROUP BY 子句中。  
该PGM表可能有也可能没有记录。我下面的查询返回这些可能的结果:
- 如果没有
PGM记录,则仅ID返回一个结果 per 并且该PGM.CD列返回NULL(或''perCASE)。 - 如果表中只有一条记录
PGM,并且PGM.CD = 200('DLA'per theCASE),则 perID仅返回一个结果。 - 如果表中只有一条记录
PGM,并且PGM.CD <> 200(''per theCASE),则 perID仅返回一个结果。 - 如果表中有多个记录
PGM(perID),即 121、200、156,则每个 都会产生多行ID。 
我需要一个查询来仅返回一行ID,并结合PGM.CD列的结果。该PGM.CD列应仅返回''或200('DLA'根据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
这是我的查询返回的(没有CASE修改PGM.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
我希望所有这些都是有道理的。谢谢您的帮助。
安东尼