【发布时间】:2020-06-05 15:25:46
【问题描述】:
对于下面的 TSQL,期望是生成和输出 COL 嵌套在 T 中的位置,但返回一个平面结果。
With FilteredTables as (
select * from INFORMATION_SCHEMA.TABLES
union
select * from INFORMATION_SCHEMA.TABLES -- Repeated just to show the issue
)
select T.TABLE_SCHEMA, T.TABLE_NAME,
COL.COLUMN_NAME, --as "columns.name",
COL.DATA_TYPE --as "columns.type"
from FilteredTables T
INNER JOIN INFORMATION_SCHEMA.COLUMNS COL
on T.TABLE_SCHEMA = COL.TABLE_SCHEMA
and T.TABLE_NAME = COL.TABLE_NAME
--order by [Schema], [Table]
FOR XML Auto
当从 FilteredTables CTE 中删除联合时,它会按预期工作
这是一个 SQL 错误还是有什么好的理由?
【问题讨论】:
-
看起来像一个带有错误,MS规范说'with' CTE就像'view',它允许联合——我猜它作为一个内联派生表工作?
-
我的一般建议是:不要使用
AUTO模式...我永远不会依赖花哨的逻辑,它不受我的控制来神奇地创建所需的结构。几乎在任何情况下PATH都是要走的路……至少对我来说……
标签: tsql union common-table-expression xml-formatting