【问题1】请教个 SQL语法问题表1: table1购房人 房间号 总房价张三 A301 1200000.00李四 A401 2300000.00王五 A501 3400000.00表1: table2房间号 款项类别 已收款金额A301 订金 200000.00A401 订金 300000.00A501 订金 400000.00A301 一期按揭 500000.00A401 一期按揭 500000.00A301 二期按揭 500000.00============================================================【提问】写出 查询 包含 购房人、房间号、剩余未收房款 字段 结果的SQL语句( 剩余未收房款 = 总房价 - 已收款金额 )============================================================【我这样写对吗?】SELECT a.购房人,a.房间号,a.总房价 - b.SUM(已收款金额) FROM table1 AS aLEFT JOIN table2 AS b ONa.房间号 = b.房间号GROUP BY a.购房人============================================================【问题2 】 如果有加减乘除运算 SQL怎么表达?
4 回答
MM们
TA贡献1886条经验 获得超2个赞
SELECT distinct a.购房人,a.房间号,(a.总房价 -
(SELECT SUM( b.已收款金额 )
FROM table1 a, table2 b
WHERE a.房间号 = b.房间号
))
FROM table1 a,table2 b where
a.房间号 = b.房间号
或者按楼主的方法
SELECT distinct a.购房人,a.房间号,(a.总房价 - (
SELECT SUM( b.已收款金额 )
FROM table1 a, table2 b
WHERE a.房间号 = b.房间号
) )
FROM table1 a
LEFT JOIN table2 b ON
a.房间号 = b.房间号
不能用group by 语句,不过还是不太好
楼主写的不对,首先b.SUM(已收款金额) 不能这么写,sum(b.已收款金额)还行。这种left join groupby 也不能这么用。
在Oracle里面加减乘除是可以直接用+-*/的,也就是说"a.总房价"后面可以直接跟运算符。
UYOU
TA贡献1878条经验 获得超4个赞
先用聚合函数求和,然后再减
1 2 3 4 5 | SELECT t1.购房人, (t1.总房价- tu.已收款金额) AS UnPaid FROM table1 AS t1, (SELECT sum(t2.已收款金额) AS 已收款金额,房间号 FROM dbo.table2 AS t2 GROUP BY 房间号) as tu WHERE t1.房间号= tu.房间号 |
添加回答
举报
0/150
提交
取消