日期:2014-05-17  浏览次数:20562 次

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还是原有值?
&nbs