AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 301383
Accepted
JAUGRY
JAUGRY
Asked: 2021-10-20 22:57:07 +0800 CST2021-10-20 22:57:07 +0800 CST 2021-10-20 22:57:07 +0800 CST

如何使用不同的表将一列分成两列?

  • 772

我正在用 VBA 开发一个前端应用程序,它链接到一个 Oracle 数据库。在 Oracle 中有两个表Table1和Table2,它们通过 expTypeID 和 measID 相互关联:

Table1
expTypeID | measID| val
12          20001   1.1
13          20002   200
13          21043   250
12          29321   0.9
13          29322   150
15          23450   23000
Table2
expTypeID | measID | productID | productName
12          20001      100023   Apple
13          20002      100023   Apple
13          21043      129842   Pear
12          29321      198372   Orange
13          29322      198372   Orange

我想得到一个新表,所有产品都包含不同列中特定 expTypeID 的值,例如 expTypeID = 12 -> ""Density"" 和 expTypeID = 13 -> ""EModulus"":

GoalTable
productName | productID |   Density |   EModulus
Apple         100023          1.1         200
Pear          129842           -          250
Orange        198372          0.9         150

我知道当所有必要的数据都在一个表中可用时是可能的:show-one-column-data-as-two-columns-in-sql(我发现 mat 提出的查询特别有用)。当数据存在于两个表中时是否仍有可能?

提前致谢

oracle vba
  • 1 1 个回答
  • 77 Views

1 个回答

  • Voted
  1. Best Answer
    Akina
    2021-10-21T00:15:24+08:002021-10-21T00:15:24+08:00
    WITH
    table1 (EXPTYPEID, MEASID, VAL) AS ( 
        SELECT 12,          20001,   1.1   FROM DUAL UNION ALL
        SELECT 13,          20002,   200   FROM DUAL UNION ALL
        SELECT 13,          21043,   250   FROM DUAL UNION ALL
        SELECT 12,          29321,   0.9   FROM DUAL UNION ALL
        SELECT 13,          29322,   150   FROM DUAL UNION ALL
        SELECT 15,          23450,   23000 FROM DUAL 
    ),
    table2 (EXPTYPEID, MEASID, PRODUCTID, PRODUCTNAME) AS (
        SELECT 12,          20001,      100023,   'Apple'  FROM DUAL UNION ALL
        SELECT 13,          20002,      100023,   'Apple'  FROM DUAL UNION ALL
        SELECT 13,          21043,      129842,   'Pear'   FROM DUAL UNION ALL
        SELECT 12,          29321,      198372,   'Orange' FROM DUAL UNION ALL
        SELECT 13,          29322,      198372,   'Orange' FROM DUAL 
    ),
    prapare_data AS (
        SELECT t1.expTypeID, t1.measID, t1.val, t2.productID, t2.productName
        FROM table1 t1
        JOIN table2 t2 ON t1.expTypeID=t2.expTypeID AND t1.measID=t2.measID
    )
    SELECT productID, productName,
           MAX(CASE WHEN expTypeID = 12 THEN val END) AS Density,
           MAX(CASE WHEN expTypeID = 13 THEN val END) AS EModulus
    FROM prapare_data
    GROUP BY productID, productName
    ORDER BY productID;
    

    https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=f683e33fb705a05de3a2d7e704aac634

    • 0

相关问题

  • Oracle 中的数据库备份 - 导出数据库还是使用其他工具?

  • ORDER BY 使用文本列的自定义优先级

  • 舒服的sqlplus界面?[关闭]

  • 如何在数据库中找到最新的 SQL 语句?

  • 如何使用正则表达式查询名称?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve