我想在MySql中并排放置两列,而不将它们合并到一列中。
例如 - > 输入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查询实现我想要的输出?
让我进一步澄清上述情况:
表A包含以下数据:
Employee_Name角色 乔丹X. 瑞奇Y. 萨钦Z. Sourabh Z. Anil X
我希望输出为:
X Y Z. Jordan Ricky Sachin Anil Sourabh
希望这可以消除所有疑问。
答案 0 :(得分:0)
原始问题的答案是:
您可以使用条件聚合:
select max(case when role = 'X' then empName end) as X,
max(case when role = 'Y' then empName end) as Y
from tableA;
编辑:
更新问题的答案需要变量:
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;
答案 1 :(得分:0)
处理器如何知道哪个Y
员工与哪个X
员工合作?你会得到一个笛卡尔积的多个冗余行,而不是你想要的。但是,如果可以,那么只需使用自我加入:
select a.empName A, b,empName B
from tableA a
cross join tableA b
where a.role='X'
and b.role = 'Y'
要获得所需内容,您需要指定X
员工与Y
员工的关联方式。正如他们按字母顺序排序(...不是你想要的输出...)?或者怎么样?