日期:2014-05-19  浏览次数:20516 次

问一条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 '

可以结贴了吧!
------解决方案--------------------