我在查询中有[Preko]列计算两列之间的差异。如果数字为负数,我需要显示为正数,如果是正数,则应该保持不变。我可以&# 39;在这一个中使用ABS。我尝试了这个案例,但它没有用。 我得到的问题是列Preko无效。
这是我第二次尝试使用iif的代码:
SELECT FP.Firma
,FP.NazFirme
,FP.Konto
,FP.NazivKonta
,FP.Partner
,FP.NazivPartnera
,Sum(FP.Duguje) AS dug
,Sum(FP.Potrazuje) AS pot
,Sum(IIf([FP].[Konto] Like '2*'
,[duguje]-[potrazuje]
,[potrazuje]-[duguje])) AS USaldo
,Sum(IIf([datumval]<= '1.1.2017'
,IIf([FP].[Konto] Like '2*'
,[duguje]-[potrazuje]
,[potrazuje]-[duguje]),0)) AS [Preko]
,IIf([Preko]<0,0,[Preko]) AS Preko1
FROM tblFinansijskiPodaci FP
Where FP.Firma = 1
AND FP.Partner=1110
GROUP BY FP.Firma
,FP.NazFirme
,FP.Konto
,FP.NazivKonta,
,FP.Partner
,FP.NazivPartnera
HAVING (((FP.Konto)=2040))
答案 0 :(得分:2)
您也可以使用case语句而不是iif部分。
CASE WHEN Preko<0 THEN 0 ELSE Preko END
或
CASE WHEN Preko<0 THEN -Preko ELSE Preko END
这似乎更符合您的逻辑,具体取决于您希望如何处理否定数据。
答案 1 :(得分:1)
同意HoneyBadger - ABS是获取ABS(-1)返回的方法1.查看APEX SQL工具以获得快速格式化选项。它是免费的,使你的代码更容易阅读,这意味着你会发现你得到更多的答案。
答案 2 :(得分:1)
WITH cte AS (
SELECT FP.Firma
,FP.NazFirme
,FP.Konto
,FP.NazivKonta
,FP.Partner
,FP.NazivPartnera
,Sum(FP.Duguje) AS dug
,Sum(FP.Potrazuje) AS pot
,Sum(IIf([FP].[Konto] Like '2*'
,[duguje]-[potrazuje]
,[potrazuje]-[duguje])) AS USaldo
,Sum(IIf([datumval]<= '1.1.2017'
,IIf([FP].[Konto] Like '2*'
,[duguje]-[potrazuje]
,[potrazuje]-[duguje]),0)) AS [Preko]
FROM tblFinansijskiPodaci FP
Where FP.Firma = 1
AND FP.Partner=1110
GROUP BY FP.Firma
,FP.NazFirme
,FP.Konto
,FP.NazivKonta,
,FP.Partner
,FP.NazivPartnera
HAVING (((FP.Konto)=2040))
)
SELECT *, CASE WHEN Preko<0 THEN 0 ELSE Preko END preko1 FROM cte