代码之家  ›  专栏  ›  技术社区  ›  Joe Ruder

SQL Server存储过程where子句出错

  •  -2
  • Joe Ruder  · 技术社区  · 7 年前

    这件事我完全搞不懂,如果有人能帮我,我将不胜感激。

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    ALTER PROCEDURE [dbo].[StopVisitsByCustomer]
    AS
    BEGIN
        DECLARE @CUSTOMERNAMES AS VARCHAR(MAX), -- TO FETCH THE UNIQUE CUSTOMER NAME FOR THE PIVOTING
                @SQLQRY AS VARCHAR(MAX) -- FOR HOLDING DYNAMIC SQL
    
        SELECT @CUSTOMERNAMES = STUFF((SELECT ',' + QUOTENAME(CUSTOMER_NAME)
                                       FROM CUSTOMERS
                                       GROUP BY CUSTOMER_NAME
                                       ORDER BY CUSTOMER_NAME
                                       FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
    
        -- DYNAMIC SQL FOR THE PIVOT QUERY TO RETURN THE DETAILS IN THE DESIRED FORMAT
        SET @SQLQRY = 'SELECT 
                           CON_NAME AS ConName,
                           CON_ADDRESS1 AS Address1,
                           CON_ADDRESS2 AS Address2,
                           CON_CITY AS City,
                           CON_STATE AS State,
                           CON_ZIP AS Zip, ' + @CUSTOMERNAMES + ' 
                       FROM 
                           (SELECT  
                                CON_NAME,
                                CON_ADDRESS1,
                                CON_ADDRESS2,
                                CON_CITY,
                                CON_STATE,
                                CON_ZIP,
                                CUSTOMER_ID, 
                                CUSTOMER_NAME
                            FROM 
                                STOP_DETAILS
                            INNER JOIN
                                CUSTOMERS ON CUSTOMERS.ID = STOP_DETAILS.CUSTOMER_ID) Stops
                PIVOT 
                    (COUNT(CUSTOMER_NAME)
                     FOR CUSTOMER_NAME in (' + @CUSTOMERNAMES + ')
                    ) Customers'
    
        -- EXECUTE THE DYNAMIC SQL FOR GIVING THE OUTPUT
        EXECUTE(@SQLQRY);
    END
    

    我试过把where子句放在几个地方,但总是出错。

    先谢谢你。。。

    1 回复  |  直到 7 年前
        1
  •  1
  •   PPJN    7 年前

    根据您的请求,您似乎要添加 WHERE 之后 INNER JOIN

    INNER JOIN  CUSTOMERS ON CUSTOMERS.ID = STOP_DETAILS.CUSTOMER_ID
    WHERE stop_details.record_created > ''2018-09-01'') Stops 
    
    推荐文章