C# C SQL命令,以获取某个元素出现在中的xml索引中时的计数
我正在尝试使用C中的SQL命令处理一些测试数据。我的表模式包含一个时间戳和一个XML文件。我想获取XML文件中某个实例的计数。例如,我想得到每次索引包含a时的计数。我大致知道我想做什么,但我不确定这是否可行 数据库示例C# C SQL命令,以获取某个元素出现在中的xml索引中时的计数,c#,mysql,sql,xml,C#,Mysql,Sql,Xml,我正在尝试使用C中的SQL命令处理一些测试数据。我的表模式包含一个时间戳和一个XML文件。我想获取XML文件中某个实例的计数。例如,我想得到每次索引包含a时的计数。我大致知道我想做什么,但我不确定这是否可行 数据库示例 Name Timestamp Metadata test1 1/1/2004 12:00:16 AM <metadata> <
Name Timestamp Metadata
test1 1/1/2004 12:00:16 AM <metadata>
<tests>A</tests>
</metadata>
test2 1/2/2004 12:00:19 AM <metadata>
<tests>B</tests>
</metadata>
若要使用计数函数,您必须按其他字段分组,或者也要对它们使用函数
SELECT YEAR(Timestamp) * 12 + MONTH(Timestamp), Month(Timestamp) as month,
Year(Timestamp) as year, xmlCol.value('(/metadata/tests)[1]', 'varchar(50)')
AS Value WHERE xmlCol.Value EQUALS 'A' FROM dbo.TestTable AS Temp
所以您可以选择它们作为临时字段,然后使用聚合函数从临时字段中选择所有字段
select min(Year),min(month) ,count(Value ) from temp
那真的是MySQL吗?您的查询看起来更像是SQL Server对响应的存储!
string sql = "SELECT YEAR(Timestamp) * 12 + MONTH(Timestamp), Month(Timestamp) as month, Year(Timestamp) as year, xmlCol.value('(/metadata/tests)[1]', 'varchar(50)') WHERE xmlCol.Value EQUALS 'A' as Month, Year, Count FROM dbo.TestTable;"
SELECT YEAR(Timestamp) * 12 + MONTH(Timestamp), Month(Timestamp) as month,
Year(Timestamp) as year, xmlCol.value('(/metadata/tests)[1]', 'varchar(50)')
AS Value WHERE xmlCol.Value EQUALS 'A' FROM dbo.TestTable AS Temp
select min(Year),min(month) ,count(Value ) from temp