我正在尝试将表中的行转换为单行-旧的枢轴栗子。我正在使用sqlserver(和一个新手),并创建了一个简单的示例来说明问题。
create table myrows (id number, name varchar2(10), seq number);
insert into myrows values (1, 'ACE0316', 1);
insert into myrows values (2, 'ACE3134', 2);
insert into myrows values (3, 'ACE0356', 3);
如果我提交以下查询,则会得到零结果,因为不存在以seq为4的行,但是无论是否存在seq = 4的行,我都想要一个 d_name 列。
select a.name a_name, b.name b_name, c.name c_name, d.name d_name
from (
select name from myrows where seq = 1) a,
(select name from myrows where seq = 2) b,
(select name from myrows where seq = 3) c,
(select name from myrows where seq = 4) d
预先感谢 安德鲁
答案 0 :(得分:2)
您可以尝试将条件MAX
或MIN
与CASE WHEN
一起使用
create table myrows (id int, name varchar(10), seq int);
insert into myrows values (1, 'ACE0316', 1);
insert into myrows values (2, 'ACE3134', 2);
insert into myrows values (3, 'ACE0356', 3);
查询1 :
select
MAX(CASE WHEN seq = 1 then name end) a_name,
MAX(CASE WHEN seq = 2 then name end) b_name,
MAX(CASE WHEN seq = 3 then name end) c_name
from myrows
Results :
| a_name | b_name | c_name |
|---------|---------|---------|
| ACE0316 | ACE3134 | ACE0356 |