SQL 语句 - 在一列中获取多个值
Posted
技术标签:
【中文标题】SQL 语句 - 在一列中获取多个值【英文标题】:SQL statement - get multiple values in one column 【发布时间】:2019-07-18 06:45:13 【问题描述】:我有一个包含如下数据的表格:
id | name | value
12 | KREA | 3,7
13 | KREA | 12.6
12 | GFR | 2.2
13 | GFR | 1.7
现在我想在一列中获取 krea 和 gfr 的名称和值,如下所示:
id | name1 | value1 | name2 | value2
12 | KREA | 3.7 | GFR | 2.2
...
我尝试加入,但没有成功。
select rps1.id, rps1.name, rps1.value, rps2.id, rps2.name, rps2.value
from table1 rps1, table1 rps2
where rps1.name like 'KREA'
or rps2.name like 'GRFR' and rps1.id = rps2.id
and crd > '17.07.2019 00:00:00' order by id
谁能告诉我我做错了什么?提前致谢! :)
【问题讨论】:
哪个 RDBMS?哦,请停止使用隐式连接... From t1, t2 ...
这是一个 oracle 数据库
【参考方案1】:
使用这个。
select
t1.id,
t1.name,
t1.value,
t2.id,
t2.name,
t2.value
from
(select id, name, value from table1 where name='KREA' and crd > '17.07.2019 00:00:00') t1
join
(select id, name, value from table1 where name='GFR' and crd > '17.07.2019 00:00:00') t2
on t1.id = t2.id
order by
t1.id
【讨论】:
【参考方案2】:除了一些错误之外,您尝试的查询非常好。
rps1.name like 'KREA'
or rps2.name like 'GRFR'
--> need to use AND instead of OR
--> need to use 'GFR' instead of 'GRFR'
order by id
--> Need to use alias rps1.id
-- 所以你的查询会是这样的:
select rps1.id, rps1.name, rps1.value, rps2.id, rps2.name, rps2.value
from table1 rps1, table1 rps2
where rps1.name like 'KREA'
AND rps2.name like 'GFR' and rps1.id = rps2.id
and crd > '17.07.2019 00:00:00'
order by rps1.id
db<>fiddle demo
干杯!!
【讨论】:
以上是关于SQL 语句 - 在一列中获取多个值的主要内容,如果未能解决你的问题,请参考以下文章