rek*_*ire 1 xml sql t-sql group-by sqlxml
我有一个带有 XML 列(称为元数据)的表,如下所示:
\n\n<props>\n <prop name="bytes" value="194" />\n <prop name="error" value="File is a text file" />\n <prop name="mime-type" value="text/plain " />\n</props>\nRun Code Online (Sandbox Code Playgroud)\n\n现在我有一些不同的错误,我可以在这里选择:
\n\nSELECT MetaData.value(\'(/props/prop[@name="error"]/@value)[1]\', \'varchar(50)\') Error,\n MetaData.value(\'(/props/prop[@name="mime-type"]/@value)[1]\', \'varchar(50)\') MimeType,\n *\nFROM source\nWHERE MetaData.exist(\'/props/prop[@name="error"]\') = 1\nRun Code Online (Sandbox Code Playgroud)\n\n现在我想计算错误发生的频率:
\n\nSELECT MetaData.value(\'(/props/prop[@name="error"]/@value)[1]\', \'varchar(50)\') Error,\n COUNT(*) Count\nFROM source\nWHERE MetaData.exist(\'/props/prop[@name="error"]\') = 1\nGROUP BY Error\nRun Code Online (Sandbox Code Playgroud)\n\n但我收到错误消息:
\n\n\n\n\nMeldung 207、Ebene 16、状态 1、Zeile 5
\n
\n Ung\xc3\xbcltiger Spaltenname \'错误\'。
这意味着类似:无效的列名\'错误\'
\n\n我也在这里尝试过:
\n\nSelect Error, COUNT(Error) FROM (\n SELECT MetaData.value(\'(/props/prop[@name="error"]/@value)[1]\', \'varchar(50)\') Error\n FROM videos\n WHERE MetaData.exist(\'/props/prop[@name="error"]\') = 1\n)\nGROUP BY Error\nRun Code Online (Sandbox Code Playgroud)\n\n但这会崩溃:
\n\n\n\n\nMeldung 156、Ebene 15、Status 1、Zeile 6
\n
\n Falsche 语法位于 N\xc3\xa4he des GROUP-Schl\xc3\xbcsselworts 中。
这意味着类似:关键字 GROUP 附近的语法错误
\n\n我该如何解决这个问题?
\n唯一一次可以在同一查询中引用别名列是在 ORDER BY 子句中。您上次尝试的错误是必须为子查询指定一个表别名,由于缺乏更好的名称,我在下面使用了“X”。
SELECT Error, COUNT(Error) [Count]
FROM (
SELECT MetaData.value('(/props/prop[@name="error"]/@value)[1]', 'varchar(50)') Error
FROM source
WHERE MetaData.exist('/props/prop[@name="error"]') = 1
) X
GROUP BY Error
Run Code Online (Sandbox Code Playgroud)
AndCount是一个保留字,因此如果要使用它,则需要将其放在方括号中。
| 归档时间: |
|
| 查看次数: |
6707 次 |
| 最近记录: |