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 语句 - 在一列中获取多个值的主要内容,如果未能解决你的问题,请参考以下文章

在一列中按多个值分组

java - 如何根据Java Servlet中的外键在一列中显示多个值?

将多个下拉值保存到 SQL 数据库的一列中

Python:在一列中为另一列中的单个值显示多个值

熊猫在一列中替换多个值

如何在一列中存储数组或多个值