给出一个递归/分层格式的xml文件,如下所示:
taxonomy.xml
sortBy := []string{"-created_when", "title"}
db.C(Collection).Find(Query).Limit(limit).Sort(strings.Join(sortBy, ",")).Iter()
有没有办法使用T-SQL加载并将结构展平为表格格式,如下所示:
例如,上述XML的所需结果将是:
我写了一个小的控制台应用程序,在没有提出正确的SQL后做到这一点,但我不禁想到有一个更简单的方法。
这是一个带有xml的SQL小提琴: http://sqlfiddle.com/#!6/9eecb7/3265/0
答案 0 :(得分:2)
;WITH xmlCTE
AS
(
SELECT
record.query('./*') query,
record.value('@code', 'varchar(50)') code,
record.value('name[1]', 'varchar(50)') name,
record.value('facet[1]', 'varchar(50)') facet,
0 depth
FROM @taxonomy.nodes('/taxonomy/record') t(record)
UNION ALL
SELECT
records.query('./*') query,
records.value('@code', 'varchar(50)') code,
records.value('name[1]', 'varchar(50)') name,
records.value('facet[1]', 'varchar(50)') facet,
depth + 1
FROM xmlCTE
CROSS APPLY query.nodes('./record') t2(records)
)
SELECT code, name, facet, depth
FROM xmlCTE