0

複数の結果を持つ可能性のある select ステートメントの結果のエイリアスを作成するための最良の方法は何ですか? Case ステートメントと If,Then,Else ステートメントを使用しようとしましたが、すべてのインスタンスで構文エラーが発生します。

私の基本コードは次のとおりです。

Select e.emp_id as 'EmpId'
,pe.name AS 'Goal Plan Name'
,p.id
,(select top 1 (g.statusid) as 'Status' from goals g
inner join goalassignments ga ON ga.goalid = g.id AND g.typeid IN (1,3,5)
where ga.planid = p.id) 

from plans p  
inner join periods (nolock) AS pe on pe.id = p.periodid 
inner join vgr_emp (nolock) AS e on p.empid = e.emp_id  

g.statusid = 1 の場合、「保留中」と表示したい g.statusid = 2 の場合、「割り当て済み」と表示したい ただし、一部は空白になり、列に「Null」と表示されます。それらの値に「計画なし」と言ってもらいたいです。

case ステートメントと if ステートメントのどちらが最適ですか? 試行するたびに、構文エラーが発生します。どんな助けでも大歓迎です。

4

2 に答える 2

0

mysqlでは、次のようなことができます

select concat(if(g.statusid = 1, 'Pending', ''), if(g.statusid = 2, 'Assigned', ''), if(g.statusid is NULL, 'NoPlan', '')), 
e.emp_id as 'EmpId'
,pe.name AS 'Goal Plan Name' ,p.id
    ,(select top 1 (g.statusid) as 'Status' from goals g
    inner join goalassignments ga ON ga.goalid = g.id AND g.typeid IN (1,3,5)
    where ga.planid = p.id) 
from plans p  
inner join periods (nolock) AS pe on pe.id = p.periodid 
inner join vgr_emp (nolock) AS e on p.empid = e.emp_id  

mysql フロー制御

于 2013-09-07T04:48:30.500 に答える