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 DS.DataSourceID=@DataSourceID
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 :(得分:2)
假设您的意思是错误消息:
关键字'with'附近的语法不正确。如果此语句是公用表表达式,xmlnamespaces子句或更改跟踪上下文子句,则必须以分号结束前一个语句。
然后做它说的话;使用分号终止前一个表达式...
[snip]
WHERE DS.DataSourceID=@DataSourceID
;
WITH UDFLabel ( ID, Label )
AS ( SELECT 1, @UDFLabel1
UNION
[snip]
;
非常重要,并使其有效。
我认为我会在这个场景中使用表变量(或类似的)。