数据库相关问题,希望会的大佬帮忙解决,在线等!

我在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;