我有一个基于某些选择创建XML字符串的存储过程。
如果其中一个选项返回NULL,是否可以显示默认值? 基本上我只想在我的XML中保持相同的结构,而不管值是否为NULL(当前XML只显示带有值的记录)。
示例存储过程:
SELECT A.ranking,
(
SELECT B.groupName,
(
SELECT C.policy,
C.groupCount
FROM @temp C
WHERE C.ranking = A.ranking
AND C.groupName = B.groupName
ORDER BY C.groupCount desc, C.policy
FOR XML PATH(''), ELEMENTS, TYPE
) AS groupName
FROM @temp B
WHERE B.ranking = A.ranking
GROUP BY B.groupName
ORDER BY B.groupName
FOR XML PATH(''), ELEMENTS, TYPE
)
FROM @temp A
GROUP BY A.ranking
ORDER BY A.ranking
FOR XML PATH('policyRanking'), ELEMENTS, TYPE, ROOT('ranks')
非常感谢你提供任何帮助,蒂姆。
答案 0 :(得分:3)
使用ISNULL函数,将每个NULLable列(参见表定义)替换为表达式:
ISNULL ( column , default_value )
答案 1 :(得分:1)
尝试这样的事情
SELECT coalesce(A.ranking,0) as ranking
(
SELECT coalesce(B.groupName,'') as groupName,
(
SELECT C.policy,
C.groupCount
FROM @temp C
WHERE C.ranking = A.ranking
AND C.groupName = B.groupName
ORDER BY C.groupCount desc, C.policy
FOR XML PATH(''), ELEMENTS, TYPE
) AS groupName
FROM @temp B
WHERE B.ranking = A.ranking
GROUP BY B.groupName
ORDER BY B.groupName
FOR XML PATH(''), ELEMENTS, TYPE
)
FROM @temp A
GROUP BY A.ranking
ORDER BY A.ranking
FOR XML PATH('policyRanking'), ELEMENTS, TYPE, ROOT('ranks')