【发布时间】:2019-07-09 05:40:55
【问题描述】:
请帮助!问题来了:
- 我有 2 个表(一个事务性表和一个查找/控制表),如下所示:
事务表(A):
TXID, NAME, DESCRIPTION, GROUP, DATE, TYPE, AMOUNT, etc.
(例如12345, 'SAMPLE TRANSACTION','test','TXGROUP1','FEB.15 2019',500.00, etc.)
查找/控制表(B):
COLID, COLNAME, FLAG
(例如1,'NAME', 0; 2,'DATE',1, etc.)
- 在这种情况下,表 B 中的 COLNAME 条目指的是表 A 中的实际列名(即
B.COLNAME = 'DATE'指的是 A.DATE)
问题是,我需要编写一个查询来获取表 B 中的所有 COLNAME 值,并从表 A 中选择它们对应的分组值。例如:
- 因为
B.COLNAME包含“日期”,select max (DATE) from table A grouping by A.NAME
我尝试过的:
-
select NAME, (SELECT column_name FROM all_tab_columns where table_name like '%TABLE_A%' AND ROWNUM = 1 GROUP BY COLUMN_NAME) AS COL from TABLE_A; - 但这只是给了我列名的字面值-(即
'SAMPLE TRANSACTION', 'DATE')-而不是我实际需要的派生值,如果我要手动运行查询将是select NAME, DATE AS COL from TABLE_A;
我可能会期待这样的事情:
NAME, COL(例如'SAMPLE TRANSACTION', 'FEB.15 2019')
如果可能的话,理想情况下我只尝试在原始 SQL 中执行此操作(即没有存储过程、PL/SQL、动态等……)但是……我绝对愿意接受任何可以做到的事情工作。
非常感谢您的输入和/或建议。我相信环境是 Oracle 11g,尽管我怀疑这可能不会有太大的不同。
【问题讨论】:
-
这闻起来像您试图避免的 动态 SQL。这意味着您有两个选择:使用动态 SQL 或根本不这样做。
-
谢谢!几乎把它钉在了...