问一条SQL语句,熟习T-SQL的快来呀。在线等
用户表
用户ID 用户名字 总金额
1 abc 1000
2 def 500
用户付费表
商品id 用户id2 商品1金额 商品2金额 商品3金额
1 1 5 8 6
2 2 10 20 30
3 1 5 10 20
共两个表。已知 用户表 的 "用户名字 ",如何得到 [总金额] 减 [商品金额] 的值
如已知用户名是 abc ,我要得到以下结果集
-----------------------------------
用户名 总金额 剩余金额
abc 1000 946
------解决方案--------------------你这个数据库设计得有问题
------解决方案--------------------用户付费表
设计的不太好...
------解决方案--------------------select a.用户名字,a.总金额,剩余金额 = a.总金额 - sum(b.商品1金额) - sum(b.商品2金额) - sum(b.商品3金额) from 用户表 as a left join 用户付费表 as b on a.用户ID = b.用户ID2 where a.用户名字= 'abc 'group by a.用户名字,a.总金额
------解决方案--------------------select a.用户名字 ,a.总金额,a. 总金额- isnull(b.商品金额,0)
from 用户表 a
left join (
select 用户id2, sum(商品1金额 + 商品2金额 + 商品3金额) as 商品金额 from 用户付费表 group by 用户id2
) b
on a.用户ID =b.用户ID2
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
最新版本:20070212
http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
------解决方案--------------------select a.用户名字,a.总金额,剩余金额 = a.总金额 - sum(b.商品1金额) - sum(b.商品2金额) - sum(b.商品3金额) from 用户表 as a left join 用户付费表 as b on a.用户ID = b.用户ID2 where a.用户名字= 'abc 'group by a.用户名字,a.总金额
------解决方案--------------------select 用户名字,总金额, ( 总金额 -
(
select sum(商品1金额+商品2金额+商品3金额) from 用户付费表 where 用户id2 =
(
select top 1 用户ID from 用户表 where 用户名字 = 'abc '
)
) ) as 剩余金额 from 用户表 where 用户名字 = 'abc '
可以结贴了吧!
------解决方案--------------------