我有一个名为Employee.emp.Language
的表,其中包含可在UI上选择的语言列表。我无法向此表添加记录,也无法直接编辑UI来解决我的问题。TSQL在子查询中的联盟
我需要一个选项添加到我的查询,增加了NULL
到我的结果集。这实际上将允许用户从下拉列表中选择null
。
DECLARE @nulls AS TABLE (fieldLabel VARCHAR(10) NULL, fieldValue VARCHAR(10)
NULL)
INSERT INTO @nulls(fieldLabel, fieldValue)
VALUES ('NULL', NULL)
SELECT
(
SELECT LanguageName AS FieldLabel,
LanguageID AS FieldValue
FROM Employee.emp.Language
WHERE IsRetired = 0
UNION
SELECT fieldLabel ,
fieldValue
FROM @nulls
FOR XML PATH ('options'), ELEMENTS, TYPE, ROOT ('languages')
)
虽然我的列表中包含null
选项选择在我的下拉,我有麻烦这段代码保存到我的存储过程。
我得到的错误是:The FOR XML clause is invalid in views, inline functions, derived tables, and subqueries when they contain a set operator. To work around, wrap the SELECT containing a set operator using derived table syntax and apply FOR XML on top of it.
只要我删除union
和select
跟随它,一切工作正常。
我还能怎样完成增加值到结果集而不将其添加到直接表?
为什么必须是 '空'。 NULL =未知。您可以向Employee.emp.Language表中插入一条记录,其中LanguageName ='Unknown'。 – Wendy
@Wendy - 我无法通过添加此记录来修改源表。我正在为一个小型解决方案破解一个解决方案,其中99%的时间,NULL不会是一个可选择的选项,也不会出现在列表中。 – SBB