我正在使用游標在回圈中運行 select 陳述句以從不同的表中收集資料;快速(不作業)示例;
select DISTINCT(ordernr) from orders
INSERT INTO newtable (select Crs.ordernr as ordernr, value1 as value from table2 where table2.ordernr = Crs.ordernr );
INSERT INTO newtable (select Crs.ordernr as ordernr, value2 as value from table3 where tabel3.ordernr=Crs.ordernr ;
)
LOOP
END LOOP;
END;
我想要的只是一個插入陳述句,它只插入兩個選擇陳述句的最大值。我試圖在我的回圈中使用最大的功能,但我運行卡住了。value1 和 value2 的兩種資料型別相同
insert into newtable(select crs.ordernr as ordernr, greatest
(
select value1 as value from table1 where condition=1, select value2 as value from table2 where condition=1)
)
);
是否可以通過選擇案例或其他方式根據條件僅回傳一個值?例如 value1 或 value2 的最大值?
uj5u.com熱心網友回復:
您可以使用該greatest函式并為其提供子查詢,但是 - 遵循語法,即將它們中的每一個(select陳述句)括在其自己的括號中。
像這樣的東西:
SQL> select greatest ( (select max(sal) from emp where job = 'CLERK'),
2 (select max(sal) from emp where job = 'ANALYST')
3 ) greatest_salary
4 from dual;
GREATEST_SALARY
---------------
3450
SQL>
我不知道這是什么:
insert into newtable(select crs.ordernr as ordernr
-----------------------------
應該做的; 什么是crs?條款在哪里from?
uj5u.com熱心網友回復:
從 Oracle 12 開始,您可以使用:
INSERT INTO newtable (ordernr, value)
SELECT *
FROM (
SELECT Crs.ordernr as ordernr,
value1 as value
FROM table2
WHERE table2.ordernr = Crs.ordernr
UNION ALL
SELECT Crs.ordernr,
value2
FROM table3
WHERE table3.ordernr=Crs.ordernr
)
ORDER BY value DESC
FETCH FIRST ROW ONLY;
這意味著如果您擴展查詢以提取更多列,并且您想要一列的最高值和其他列的相應值,那么這些值將全部來自具有最高值的那一行。
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/483423.html
上一篇:加載特殊標簽時如何在Asp.net視圖中使用輸入引數呼叫GETApi使用JQuery和JavaScript
下一篇:計算表中的數字變化
