2015-06-25 54 views
0
SELECT name , 
     (SUM(CASE WHEN TransTypeName LIKE 'credit%' THEN amount 
        ELSE 0 
       END) - SUM(CASE WHEN TransTypeName LIKE 'Debit%' THEN amount 
           ELSE 0 
         END)) * 5/100 AS Interest 
    FROM ..... 

此查询返回一些负值,我想将负值转换为零。 如何编写一个查询如何将负值转换为零

+1

呃,负值为负....借方(贷方)为什么会是零? –

+1

嗨米奇,我明白你的问题,但这是我的要求任务。 –

+0

任何有这种荒谬要求的东西一定是功课。 –

回答

4

像这样的事情可能?

SELECT t1.name AS Name, CASE WHEN t1.Interest > 0 THEN Interest ELSE 0 END AS Interest 
FROM (select name, (sum(case when TransTypeName like 'credit%' then amount else 0 end) - sum(case when TransTypeName like 'Debit%' then amount else 0 end)) *5/100 as Interest from ...........) as t1 
3

使用第二个case语句:

select name, (sum(case when TransTypeName like 'credit%' then (case when amount>0 then amount else 0 end;) else 0 end) - 
sum(case when TransTypeName like 'Debit%' then (case when amount>0 then amount else 0 end;) else 0 end)) *5/100 as Interest 
from ........... 

,如果你不什么返回了一加一是负面的:

select name, (case when (sum(case when TransTypeName like 'credit%' then amount else 0 end) - 
sum(case when TransTypeName like 'Debit%' then amount) else 0 end)) *5/100)<0 then 0 else (sum(case when TransTypeName like 'credit%' then amount else 0 end) - 
sum(case when TransTypeName like 'Debit%' then amount) else 0 end)) *5/100) as Interest 
from ........... 
0
SELECT t1.name AS Name, CASE WHEN t1.Interest > 0 THEN Interest ELSE 0 END AS Interest 
FROM (select name, (sum(case when TransTypeName like 'credit%' then amount else 0 end) - sum(case when TransTypeName like 'Debit%' then amount else 0 end)) *5/100 as Interest from ...........) as t1 
相关问题