我在From里面写了SELECT语句得到M表,但我想在SELECT中的SELECT中使用M,提示M表不存在,通过查阅,我得知FROM得到的是M视图。
我现在想知道,如何通过From得到M的视图,能做295-110。。
SELECT (SELECT M.money FROM M WHERE M.ID=1)-(SELECT M.money FROM M WHERE M.ID=2)
FROM (SELECT ACC_SEND_ID ID,SUM(TradeAunt) money FROM TRADE GROUP BY ACC_SEND_ID) M;
SELECT (SELECT M.money FROM M WHERE M.ID=1)-(SELECT M.money FROM M WHERE M.ID=2)
FROM (SELECT ACC_SEND_ID ID,SUM(TradeAunt) money FROM TRADE GROUP BY ACC_SEND_ID) M;
改成这样
SELECT ( SELECT SUM(TradeAunt) FROM TRADE WHERE ACC_SEND_ID=1 )-(SELECT SUM(TradeAunt) FROM TRADE WHERE ACC_SEND_ID=2)
你写的sql语句都不对,我都不知道你是怎么写出来的
SELECT (SELECT M.money FROM M WHERE M.ID=1)-(SELECT M.money FROM M WHERE M.ID=2)
(SELECT ACC_SEND_ID ID,SUM(TradeAunt) money FROM TRADE GROUP BY ACC_SEND_ID)是对的。
select res from (select id,(money-lead(money) over(order by rownum)) res from ((SELECT ACC_SEND_ID ID,SUM(TradeAunt) money FROM TRADE GROUP BY ACC_SEND_ID)) m) where id=1
使用with先定义一下就可以了
with M AS (SELECT ACC_SEND_ID ID,SUM(TradeAunt) money FROM TRADE GROUP BY ACC_SEND_ID)
SELECT (M.moneyM-N.moneyN) money
FROM (SELECT ACC_SEND_ID ID,SUM(TradeAunt) moneyM FROM TRADE where ACC_SEND_ID=1 GROUP BY ACC_SEND_ID) M,
(SELECT ACC_SEND_ID ID,SUM(TradeAunt) moneyN FROM TRADE where ACC_SEND_ID=2 GROUP BY ACC_SEND_ID) N;
真实有效。
如果是oracle 你可以这么写
with M as (ELECT ACC_SEND_ID ID,SUM(TradeAunt) money FROM TRADE GROUP BY ACC_SEND_ID)
SELECT (SELECT M.money FROM M WHERE M.ID=1)-(SELECT M.money FROM M WHERE M.ID=2) from dual;
通用写法:
select C.S - D.S
from (
select A.s from (ELECT ACC_SEND_ID ID,SUM(TradeAunt) money FROM TRADE GROUP BY ACC_SEND_ID) A where A.id =1)C,
(
select B.s from (ELECT ACC_SEND_ID ID,SUM(TradeAunt) money FROM TRADE GROUP BY ACC_SEND_ID) B where B.id =2)D;