繁体   English   中英

从具有不同 id 的一列中查询值 (Oracle SQL)

[英]Querying values from one column with different id (Oracle SQL)

我有一个包含这些列的表格

记录编号 表格编号 价值
1个 100 'EN'
1个 101 '英语'
1个 102 '不'
2个 100 'KR'
2个 101 '韩国'
2个 102 '叶'

数据库结构保持原样,我还不能修改,所以我不得不使用这个结构。

我的问题是查询每个表单 ID 的相应值。 我试过这个:

多重子查询

WITH CODE AS 
 (SELECT * FROM DUMMY_TABLE  WHERE FORM_ID = 100),
LANGUAGE AS 
 (SELECT * FROM DUMMY_TABLE  WHERE FORM_ID = 101)

SELECT * FROM <main_query>

我遇到的问题是每条记录有多行,这对我来说似乎不是一个理想的解决方案。

我们有 2 个选择:

  • 用例来分隔值。 可以轻松修改每列上的标签。 我使用 MAX 能够使用 GROUP BY 以便每条记录返回一行。
  • 使用 pivot function
    同样,我们必须使用聚合 function 并且可以 label 我们的列,如我们所愿。
    请参阅底部的 DBfiddle 链接以了解架构和测试。
 /* Using case */ SELECT RecordId, MAX(CASE WHEN FormID = 100 THEN Value END) code, MAX(CASE WHEN FormId = 101 THEN Value END) language, MAX(CASE WHEN FormId = 102 THEN Value END) word FROM t GROUP BY RecordId;
 记录 | 代码 | 语言 | 字 -------: |:--- |:-------- |:--- 2 | 韩语 | 韩语 | 叶1 | 中文 | 英语 | 
/* Using pivot */ select * from ( select RecordId, FormId,Value from t ) pivot ( max(Value) for FormId in (100 code, 101 language, 102 word) ) order by RecordId /
 记录 | 代码 | 语言 |  WORD -------: |:--- |:-------- |:--- 1 | 中文 | 英语 | 没有 2 | 韩语 | 韩语 | 

db<> 在这里摆弄

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM