Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用一个名称但属性不同的两个xml节点求和_Xml_Xquery_Xquery Sql - Fatal编程技术网

使用一个名称但属性不同的两个xml节点求和

使用一个名称但属性不同的两个xml节点求和,xml,xquery,xquery-sql,Xml,Xquery,Xquery Sql,我有一个sql查询。我需要对两个具有相同名称()但属性不同(ident=“1cat”+“3cat”)的xml节点求和。我可以通过节点的编号([1]和[3])获得节点,但我需要通过“ident”对它们求和。如何根据1类和3类的标识对其进行汇总 DECLARE @xml XML SET @xml = '<cat:catalog xmlns:cat="http://datypic.com/cat" xmlns:prod="http://datypic.com/prod"> <

我有一个sql查询。我需要对两个具有相同名称()但属性不同(ident=“1cat”+“3cat”)的xml节点求和。我可以通过节点的编号([1]和[3])获得节点,但我需要通过“ident”对它们求和。如何根据1类和3类的标识对其进行汇总

DECLARE @xml XML  
SET @xml = 
'<cat:catalog xmlns:cat="http://datypic.com/cat" xmlns:prod="http://datypic.com/prod">
  <cat:number ident="1Category">10</cat:number>
  <cat:number ident="2Category">20</cat:number>
  <cat:number ident="3Category">30</cat:number>
</cat:catalog>'; 

WITH XMLNAMESPACES (
'http://datypic.com/cat' AS cat
)
SELECT 
    c.c.value('(cat:number/text())[1]', 'INT') '1Category',
    c.c.value('(cat:number/text())[3]', 'INT') '3Category'
FROM @xml.nodes('cat:catalog') c(c)
DECLARE@xml
SET@xml=
'
10
20
30
'; 
使用XMLNAMESPACES(
'http://datypic.com/cat“像猫一样
)
挑选
c、 c.value('(cat:number/text())[1],'INT'),'1Category',
c、 c.value('(cat:number/text())[3],'INT')'3Category'
来自@xml.nodes('cat:catalog')c(c)

好家伙!!你第二次救了我。这就是我需要的!!非常感谢!!
WITH XMLNAMESPACES ( 
'http://datypic.com/cat' AS cat 
) 
SELECT  
    c.c.value('(cat:number[@ident="1Category"])[1]', 'INT') +
    c.c.value('(cat:number[@ident="3Category"])[1]', 'INT') 
FROM @xml.nodes('cat:catalog') c(c) 
WITH XMLNAMESPACES ( 
'http://datypic.com/cat' AS cat 
) 
SELECT @xml.value('sum(/cat:catalog/cat:number[@ident=("1Category", "3Category")]/text())', 'INT')