小弟有如下这条 Sql 语句 
F_ISNULLOREMPTY 为 sql 函数函数ALTER FUNCTION [dbo].[F_ISNULLOREMPTY](@check_expression SYSNAME, @replacement_value SYSNAME) RETURNS SYSNAME
AS
BEGIN
IF(@check_expression IS NULL OR LEN(@check_expression) = 0) RETURN @replacement_value
RETURN @check_expression
ENDSELECT dbo.F_ISNULLOREMPTY(COUNT(ID) ,0) AS num  FROM V_TG_Client_Success 
WHERE AgentID = 1 AND CONVERT(VARCHAR(4), RegDate, 120) = CONVERT(VARCHAR(4), GETDATE(), 120)
AND MONTH(RegDate) IN (1,2,3,4,5,6,7,8,9,10,11,12)请问如何显示 12 条数据 如果查询不到 以 0 代替
但为何只能查询一条

解决方案 »

  1.   

    MONTH(RegDate) IN ('1','2','3','4','5','6','7','8','9','10','11','12')
      

  2.   

    其实我觉得楼主的根本不需要函数 直接CASE WHEN 判断就可以解决了
      

  3.   

    SELECT
     sum(case when id is not null or LEN(id)) = 0 then 0 else 1 end) as num
    FROM
     V_TG_Client_Success  
    WHERE
     AgentID = 1 
    AND
     CONVERT(VARCHAR(4), RegDate, 120) = CONVERT(VARCHAR(4), GETDATE(), 120)
    AND
     MONTH(RegDate) IN (1,2,3,4,5,6,7,8,9,10,11,12)
      

  4.   

    SELECT
     sum(case when id is not null or LEN(id)) = 0 then 0 else 1 end) as num
    FROM
     V_TG_Client_Success  
    WHERE
     AgentID = 1 
    AND
     CONVERT(VARCHAR(4), RegDate, 120) = CONVERT(VARCHAR(4), GETDATE(), 120)
    AND
     MONTH(RegDate) IN ('1','2','3','4','5','6','7','8','9','10','11','12')如果不行的话希望给出测试数据
      

  5.   

    SELECT
     CONVERT(VARCHAR(4), RegDate, 120),sum(case when id is not null or LEN(id)) = 0 then 0 else 1 end) as num
    FROM
     V_TG_Client_Success  
    WHERE
     AgentID = 1 
    AND
     CONVERT(VARCHAR(4), RegDate, 120) = CONVERT(VARCHAR(4), GETDATE(), 120)
    AND
     MONTH(RegDate) IN ('1','2','3','4','5','6','7','8','9','10','11','12')
    group by
     CONVERT(VARCHAR(4), RegDate, 120)
      

  6.   

    SELECT
     CONVERT(VARCHAR(7), RegDate, 120),sum(case when id is not null or LEN(id) = 0 then 0 else 1 end) as num
    FROM
     V_TG_Client_Success  
    WHERE
     AgentID = 1 
    AND
     CONVERT(VARCHAR(4), RegDate, 120) = CONVERT(VARCHAR(4), GETDATE(), 120)
    group byCONVERT(VARCHAR(7), RegDate, 120)
    显示数据为
    2011-01 0
    2011-05 0
    不知道那里错了 1 月份应该有 3 条记录的
      

  7.   

    1 1 AA A NULL NULL NULL 2011-01-01 00:00:00.000 2012-11-01 00:00:00.000 1 0
    3 1 AA A NULL NULL NULL 2011-05-01 00:00:00.000 2012-01-01 00:00:00.000 2 0
    8 1 FF F NULL NULL NULL 2011-01-01 00:00:00.000 2012-11-01 00:00:00.000 2 0
    9 1 GG G NULL NULL NULL 2011-01-01 00:00:00.000 2012-11-01 00:00:00.000 2 0
      

  8.   

    我修改了一下你的Sql
    SELECT
     CONVERT(VARCHAR(7), RegDate, 120) as regMonth ,COUNT(case when id is not null or LEN(id) = 0 then 0 else 1 end) as num
    FROM
     V_TG_Client_Success  
    WHERE
     AgentID = 1 
    AND
     CONVERT(VARCHAR(4), RegDate, 120) = CONVERT(VARCHAR(4), GETDATE(), 120)
    group by
    CONVERT(VARCHAR(7), RegDate, 120)