Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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
SQL server对表的XML解析_Sql_Sql Server_Xml - Fatal编程技术网

SQL server对表的XML解析

SQL server对表的XML解析,sql,sql-server,xml,Sql,Sql Server,Xml,我不熟悉SQLXML操作。我在SQL和XML解析方面有问题 我有一个名为Task的表。它有3列: 名字 任务 日期 任务以xml格式以小时为单位保存,格式如下: <TASK> <A>1</A> <B>4</B> <C>0</C> </TASK> 我不熟悉XML,但我无法解决这个问题。使用以下方法提取XML非常简单: 请以文本形式发布您的问题-许多公司用户被禁止访问网站,

我不熟悉SQLXML操作。我在SQL和XML解析方面有问题

我有一个名为
Task
的表。它有3列:

  • 名字
  • 任务
  • 日期
任务
以xml格式以小时为单位保存,格式如下:

<TASK>
    <A>1</A>
    <B>4</B>
    <C>0</C>
</TASK>

我不熟悉XML,但我无法解决这个问题。

使用以下方法提取XML非常简单:


请以文本形式发布您的问题-许多公司用户被禁止访问网站,如
imgur
,因此回答问题就成了猜测工作。

任务
列是实际的XML数据类型还是某种字符变体?Prince Joseph T eh?我们就是你的爪牙吗?:-)坦纳:这只是我的名字:)。。请帮助我解决这个问题,这是否也会汇总每个员工的值?基本上,名称是员工id,它可以出现多次,因此需要汇总每个员工id的任务xml。。。但是是的,OP不是greatThank你这么多StuartLC。。这很有帮助。。我们无法预测任务编号。。它可能会改变。。在那种情况下我们能做什么。。?在这种情况下,我们无法指定每个任务。@StuartLC对您来说太晚了,我明白了now@StuartLC以前从未见过这样做,像这样混合sql和XML,但很好的答案,将在将来记住它
Name          |   Task                                     | Date
========================================================================
Employee2219  |   <TASK><A>1</A><B>4</B><C>0</C></ TASK >  | 2014-01-28
Employee2219  |   <TASK><A>3</A><B>2</B><C>1</C></ TASK >  | 2014-01-29
....
Name          | A | B | C | D 
===============================
Employee2219  | 4 | 6 | 1 | 0 
....
SELECT 
    Name, 
    SUM(TaskA) AS ATotal, 
    SUM(TaskB) AS BTotal, 
    SUM(TaskC) AS CTotal, 
    SUM(TaskD) AS DTotal
FROM
(
    SELECT
      t.NAME,
      t.Date,
      Nodes.node.value('(A)[1]', 'int') AS TaskA,
      Nodes.node.value('(B)[1]', 'int') AS TaskB,
      Nodes.node.value('(C)[1]', 'int') AS TaskC,
      Nodes.node.value('(D)[1]', 'int') AS TaskD
    FROM
        TASK t
        cross apply t.Task.nodes('/TASK') as Nodes(node)
) x
WHERE
    [Date] BETWEEN '2014-01-01' AND '2014-01-07' -- Your week range
GROUP BY 
    Name;