当前位置: 代码迷 >> Sql Server >> SQL语句,求好手帮忙。
  详细解决方案

SQL语句,求好手帮忙。

热度:40   发布时间:2016-04-24 19:50:25.0
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 余额
  相关解决方案