公用表表达式,给出了错误

问题描述:

DECLARE @UDFLabel1 VARCHAR(50), 
     @UDFLabel2 VARCHAR(50), 
     @UDFLabel3 VARCHAR(50), 
     @UDFLabel4 VARCHAR(50), 
     @UDFLabel5 VARCHAR(50) 

SELECT @UDFLabel1 = UserDefinedFieldName01, 
     @UDFLabel2 = UserDefinedFieldName02, 
     @UDFLabel3 = UserDefinedFieldName03, 
     @UDFLabel4 = UserDefinedFieldName04, 
     @UDFLabel5 = UserDefinedFieldName05 
FROM DataSourceGroup AS DSG 
JOIN DataSource AS DS 
ON DS.DataSourceGroupID=DSG.DataSourceGroupID 
WHERE [email protected] 

WITH UDFLabel (ID, Label) 
AS (SELECT 1, @UDFLabel1 
    UNION 
    SELECT 2, @UDFLabel2 
    UNION 
    SELECT 3, @UDFLabel3 
    UNION 
    SELECT 4, @UDFLabel4 
    UNION 
    SELECT 5, @UDFLabel5 
) 
SELECT ID, Label 
FROM UDFLabel 
WHERE Label IS NOT NULL 
+0

什么是实际错误? – 2009-11-14 11:42:03

+0

错误是什么? – philant 2009-11-14 11:42:36

假设你的意思的错误信息:“与”关键字附近

不正确的语法。如果此语句是公用表表达式,xmlnamespaces子句或变更跟踪上下文子句,则前面的语句必须以分号结尾。

然后做它说的;用分号来终止先前的表情...

[snip] 
WHERE [email protected] 
; 

WITH UDFLabel (ID, Label) 
AS (SELECT 1, @UDFLabel1 
    UNION 
[snip] 

;是重要的,使得它的工作。

我想我会使用表变量(或类似)为这种情况,但。