2017-08-06 8 views
0

2つの列をMySqlに並べて、1つの列にマージせずに配置したい。例えば2つの列をMySqlに並べて1つの列にマージせずに配置する方法

- > 入力1:

select empName A from tableA where role='X'; 

出力:

A 
Rahul 
Sandeep 
Shishir 

入力2:

select empName B from tableA where role='Y'; 

出力:

B 
Suresh 
Vinay 
Ravindra 
私は私の最終的な出力をしたい

A  B 
Rahul Suresh 
Sandeep Vinay 
Shishir Ravindra 

表は、両方のクエリで同じであることに注意してください。

希望の出力を達成するための任意のSQLクエリ?


私は、さらに上記のscenerioを明確にしましょう:

表Aは、データの下に含まれています

EMPLOYEE_NAME役割 ヨルダンX リッキーY サチンZ Sourabh Z アニルX

を私の出力は次のようになります:

X Y Z ヨルダンリッキーサチン アニルSourabh

これは質問ですべての疑問を削除希望。

+0

プロセッサはどの「Y」従業員を各「X」従業員に関連付けるかを決定する必要がありますか?同じ番号がない場合はどうなりますか? –

+0

Gordon私は質問欄を変更していません –

答えて

0

元の質問への答えは次のとおりです。

あなたは条件付きの集約を使用することができます。

select max(case when role = 'X' then empName end) as X, 
     max(case when role = 'Y' then empName end) as Y  
from tableA; 

EDIT:

更新質問への答えは、変数が必要になります。

select max(x) as x, max(y) as y 
from ((select empName as x, '' as y, (@xrn := @xrn + 1) as rn 
     from tableA cross join (select @xrn := 0) params 
     where role = 'X' 
    ) union all 
     (select '', empName, (@yrn := @yrn + 1) as rn 
     from tableA cross join (select yxrn := 0) params 
     where role = 'Y' 
    ) 
    ) xy 
group by rn; 
+0

@TimBiegeleisenは正しくフォーマットされていませんビットRavindraが必要な出力にあります –

0

プロセッサはどのようにしてY従業員が行くかを知ることができますどのX従業員ですか?あなたはデカルト積を複数の冗長な行にします。それがOKであればしかし、その後、ちょうど自己結合を使用:あなたが望む結果を得るために

​​

を、あなたはX従業員がY従業員に関連付けする方法を指定する必要があります。彼らがアルファベット順に並べ替えるのと同じように(...あなたの望む出力が何をするのではない...)?またはどのように?

+0

私は2つの列を持っています。その役割の名前。私はこれのためにSQLクエリを行う方法を知る必要があります。 –

+0

上記のクエリは機能しますが、繰り返し値を取得すると –

+0

の回答が読み取れます。具体的には、最後の文。 –

関連する問題