我想根据特定的列条件选择别名并输出所需的 XML。
假设我们有一个名为 的表ACCOUNTS:
姓名年龄 --------- --- 约翰·多伊 30 玛丽巷 40 爱丽丝鲍勃 50
询问:
;WITH XMLNAMESPACES
(
'http://www.w3.org/2001/XMLSchema-instance' AS abc, 'uri' AS def
)
SELECT
CASE WHEN AGE <= 30 THEN 'BUYER' AS [def:GIRL]
WHEN AGE >=40 THEN 'SELLER' END AS [def:BOY]
FROM ACCOUNTS
FOR XML PATH('abc:OilCompany'), TYPE
Run Code Online (Sandbox Code Playgroud)
输出应该是:
<abc:OilCompany>
<def:GIRL>BUYER</def:GIRL>
<def:BOY>SELLER</def:BOY>
<def:BOY>SELLER</def:BOY>
</abc:OilCompany>
Run Code Online (Sandbox Code Playgroud)
默认情况下,SQL Server 不会为 NULL 值创建节点,因此如果您将查询更改为使用两个 CASE 语句并在没有匹配项时返回 NULL,您将获得您正在寻找的 XML。
WITH XMLNAMESPACES
(
'http://www.w3.org/2001/XMLSchema-instance' AS abc,
'uri' AS def
)
SELECT CASE WHEN AGE <= 30 THEN 'BUYER' END AS [def:GIRL],
CASE WHEN AGE >= 40 THEN 'SELLER' END AS [def:BOY]
FROM ACCOUNTS
FOR XML PATH(''), ROOT('abc:OilCompany'), TYPE;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
543 次 |
| 最近记录: |