首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL语句,求好手帮忙。

2013-11-19 
SQL语句,求高手帮忙。。select 客户编号,用户名称,地址,水表号,grade.水价 as 单价,电话,cust.余额-(select

SQL语句,求高手帮忙。。

select 客户编号,用户名称,地址,水表号,
grade.水价 as 单价,电话,
cust.余额-(select sum(应收费用) from acct2013 a where 标志 in (1,3) and a.客户ID=cust.ID) 余额,
--cust.余额
,cust.备注
from customer cust
left join  waterroad water on water.ID = cust.水路号
left join custgrade grade on  cust.用水分类=grade.ID
--right join acct2013 acct on acct.客户ID=cust.ID 
--where acct.标志 in (1,3)
--where (cust.余额-(select sum(应收费用) from #c  where 客户ID=cust.ID)>0.000009) or 余额-0>0.000009
group by cust.ID,客户编号,用户名称,地址,水表号,grade.水价,电话,cust.备注,cust.余额
order by 余额


cust.余额-(select sum(应收费用) from acct2013 a where 标志 in (1,3) and a.客户ID=cust.ID) 余额
把标志等于1,3的给减掉了,把标志不是(1,3)的给弄成NULL了,怎么可以让标志不是(1,3)的显示原来的值啊? sql
[解决办法]
引用:
select 客户编号,用户名称,地址,水表号,
grade.水价 as 单价,电话,
cust.余额-(select sum(应收费用) from acct2013 a where 标志 in (1,3) and a.客户ID=cust.ID) 余额,
--cust.余额
,cust.备注
from customer cust
left join  waterroad water on water.ID = cust.水路号
left join custgrade grade on  cust.用水分类=grade.ID
--right join acct2013 acct on acct.客户ID=cust.ID 
--where acct.标志 in (1,3)
--where (cust.余额-(select sum(应收费用) from #c  where 客户ID=cust.ID)>0.000009) or 余额-0>0.000009
group by cust.ID,客户编号,用户名称,地址,水表号,grade.水价,电话,cust.备注,cust.余额
order by 余额


cust.余额-(select sum(应收费用) from acct2013 a where 标志 in (1,3) and a.客户ID=cust.ID) 余额
把标志等于1,3的给减掉了,把标志不是(1,3)的给弄成NULL了,怎么可以让标志不是(1,3)的显示原来的值啊?


把sum(应收费用)改成这个 isnull(sum(应收费用),0) 试试:

select 客户编号,用户名称,地址,水表号,
grade.水价 as 单价,电话,
cust.余额-(select isnull(sum(应收费用),0) from acct2013 a where 标志 in (1,3) and a.客户ID=cust.ID) 余额,
--cust.余额
,cust.备注
from customer cust
left join  waterroad water on water.ID = cust.水路号
left join custgrade grade on  cust.用水分类=grade.ID
--right join acct2013 acct on acct.客户ID=cust.ID 
--where acct.标志 in (1,3)
--where (cust.余额-(select sum(应收费用) from #c  where 客户ID=cust.ID)>0.000009) or 余额-0>0.000009
group by cust.ID,客户编号,用户名称,地址,水表号,grade.水价,电话,cust.备注,cust.余额
order by 余额

[解决办法]
引用:
Quote: 引用:

到底不是1,3的设为null还是原有值?
  经过那条SQL语句以后就是NULL值了,就是把不是1,3的弄成原来的值...


改成这样试试:
select 客户编号,用户名称,地址,水表号,
grade.水价 as 单价,电话,
cust.余额-(select isnull(sum(应收费用),0) from acct2013 a where 标志 in (1,3) and a.客户ID=cust.ID) 余额,
--cust.余额
,cust.备注
from customer cust
left join  waterroad water on water.ID = cust.水路号
left join custgrade grade on  cust.用水分类=grade.ID
--right join acct2013 acct on acct.客户ID=cust.ID 
--where acct.标志 in (1,3)
--where (cust.余额-(select sum(应收费用) from #c  where 客户ID=cust.ID)>0.000009) or 余额-0>0.000009
group by cust.ID,客户编号,用户名称,地址,水表号,grade.水价,电话,cust.备注,cust.余额
order by 余额

热点排行