ISNULL(SUM(MyTable.Total), 0) AS Total
如何修改上面的语句也检查总计小于0 (零),这样如果总为空或更低比0 (负),我给你0至总检查,如果值为NULL或一个TSQL语句小于0
ISNULL(SUM(MyTable.Total), 0) AS Total
如何修改上面的语句也检查总计小于0 (零),这样如果总为空或更低比0 (负),我给你0至总检查,如果值为NULL或一个TSQL语句小于0
CASE WHEN ISNULL(SUM(MyTable.Total), 0) <= 0 THEN 0
ELSE SUM(MyTable.Total)
END AS Total
CASE
WHEN COALESCE(SUM(MyTable.Total), 0) <= 0 THEN 0
ELSE SUM(MyTable.Total)
END AS [Total]
CASE WHEN
COALESCE(SUM(MyTable.Total),0) <= 0
THEN
0
ELSE
SUM(MyTable.Total)
END AS Total
如何
SUM(ISNULL(MyTable.Total, 0)) AS Total
我更喜欢这一点,因为数据库中的NULL实现并不总是逻辑的,并且不同供应商之间以及ANSI_NULLS是否启用。
E.g. NULL,NULL和1的SUM被返回为1,但是(1 + NULL NULL +)等于NULL ...
然后可以与壳体做小于0如上述,从而
CASE
WHEN SUM(ISNULL(MyTable.Total,0)) <= 0 THEN 0
ELSE SUM(ISNULL(MyTable.Total,0))
END AS [Total]
PostgreSQL里,因为没有IS NULL功能,你可以这样做:
CASE WHEN SUM(MyTable.Total) > 0 THEN SUM(MyTable.Total) ELSE 0 END AS Total
@ SQL.NET战士,我创建了一个功能,为您服务。它将一个整数作为参数,并为NULL或负值返回0。
--this statements ensure we drop the function before recreating it
IF EXISTS(SELECT * FROM sysobjects WHERE xtype = 'FN' AND name = 'nonNullNegative')
BEGIN
DROP FUNCTION dbo.nonNullNegative
END
GO
--the real function definition
CREATE FUNCTION dbo.nonNullNegative(@numValue INT)
RETURNS INT
AS
BEGIN
DECLARE @newValue AS INT;
SET @newValue= CASE WHEN ISNULL(@numValue,0)<=0 THEN 0 ELSE @numValue
END
RETURN @newValue;
END
GO
use MyDatabase;
--use it like this
SELECT dbo.nonNullNegative(-2);--outputs 0
select greatest(0, -1) FROM DUMMY
返回0
select greatest(0, 1) FROM DUMMY
它返回1
_greatest_不存在于SQL Server中 – badbod99 2015-01-07 14:34:26
只要是不同的......
ISNULL(SUM(Total) * NULLIF(SIGN(SUM(Total)), -1), 0)
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Haluk Alkın Turan
-- Create date: 2017-10-31
-- Description: Simulates ORACLE's GREATEST Function
-- Usage: select dbo.getGreatest(1,2)
-- =============================================
CREATE FUNCTION getGreatest
(
@val1 sql_variant,
@val2 sql_variant
)
RETURNS sql_variant
AS
BEGIN
RETURN (SELECT MAX(i) FROM (VALUES (@val1), (@val2)) AS T(i))
END
GO
当然,这并不尽SUM在其他情况下... Tsk tsk tsk – Cobusve 2010-05-27 15:46:23