已关闭,此问题需要更focused。目前不接受答复。
**想改善这个问题吗?**更新问题,使其仅通过editing this post关注一个问题。
4天前关闭。
Improve this question
(我正在编辑问题以显示表定义)。
我想获取存储在三个不同表中的数据。
CREATE TABLE T1 (LocationNum varchar(255),TypeCode varchar(255),Size varchar(255),PriVoltage varchar(255),SecVoltage varchar(255));
CREATE TABLE T2 (SequenceNum varchar(255),InDate date,LocationNum varchar(255));
CREATE TABLE T3 (SequenceNum varchar(255),ReadDate date,KVA int);
这里有一些数据:
INSERT INTO T1 VALUES ('GR0022000123', 'T', '225kva', '12.4kv', '120/240');
INSERT INTO T1 VALUES ('DE0068000475', 'T', '225kva', '12.4kv', '120/240');
INSERT INTO T2 VALUES ('E123', TO_DATE('2023/01/01','yyyy/mm/dd'), 'GR0022000123');
INSERT INTO T2 VALUES ('E124', TO_DATE('2023/02/01','yyyy/mm/dd'), 'GR0022000123');
INSERT INTO T3 VALUES ('E123', TO_DATE('2023/01/01','yyyy/mm/dd'), '5');
INSERT INTO T3 VALUES ('E123', TO_DATE('2023/02/01','yyyy/mm/dd'), '7');
INSERT INTO T3 VALUES ('E123', TO_DATE('2023/03/01','yyyy/mm/dd'), '6');
INSERT INTO T3 VALUES ('E124', TO_DATE('2023/01/01','yyyy/mm/dd'), '5');
INSERT INTO T3 VALUES ('E124', TO_DATE('2023/02/01','yyyy/mm/dd'), '7');
INSERT INTO T3 VALUES ('E124', TO_DATE('2023/03/01','yyyy/mm/dd'), '6');
我需要表1中所有以'GR'开始且TypeCode ='T'的LocationNum的列表。
对于列表中的每个LocationNum,我需要在Table 2中找到最近日期的SequenceNum。
然后,对于SequenceNum,我需要KVA的最大值和表3中相应的ReadDate。
最终清单应包括:LocationNum、Size、SecVoltage、ReadDate和Maximum KVA。
所以对于我提供的数据,我想要:GR0022000123,225kva,120/240,2023-02-01,7
以下是我所得到的:
select* from (select * from T3 where SequenceNum = 'E123' order by ReadDate desc) where ROWNUM=1;
(It是Oracle数据库。)
1条答案
按热度按时间9rnv2umw1#
这里有一个选项,它在CTE中执行过滤的第一部分,然后将该结果集与第三个表连接以获得最终结果。请注意,我将列
size
重命名为csize
,因为 size 是保留字,不能用于此目的。