首页 > 数据库 >SQL 解析 XML

SQL 解析 XML

时间:2022-08-17 16:44:21浏览次数:51  
标签:XML KRCK 18 decimal value Live SQL 解析 select

1.使用nodes和value解析XML
<!--ItemsXml column content something like this-->
<GoodsReceiveNoteItemView>
  <Location>KRCK</Location>
  <ProductName>Soon Hock, Live 800g - 1.5kg</ProductName>
  <UomCode>KG</UomCode>
  <Quantity>2.00</Quantity>
  <UnitCost>33.000000</UnitCost>
</GoodsReceiveNoteItemView>
<GoodsReceiveNoteItemView>
  <Location>KRCK</Location>
  <ProductName>Prawn -  Live</ProductName>
  <UomCode>KG</UomCode>
  <Quantity>2.00</Quantity>
  <UnitCost>20.000000</UnitCost>
</GoodsReceiveNoteItemView>
<GoodsReceiveNoteItemView>
  <Location>KRCK</Location>
  <ProductName>Sea Bass - Live</ProductName>
  <UomCode>KG</UomCode>
  <Quantity>3.80</Quantity>
  <UnitCost>11.000000</UnitCost>
</GoodsReceiveNoteItemView>
<GoodsReceiveNoteItemView>
  <Location>KRCK</Location>
  <ProductName>Soon Hock - Live (400 to 700gm)</ProductName>
  <UomCode>KG</UomCode>
  <Quantity>1.70</Quantity>
  <UnitCost>31.000000</UnitCost>
</GoodsReceiveNoteItemView>
<GoodsReceiveNoteItemView>
  <Location>KRCK</Location>
  <ProductName>Garoupa Tiger Live</ProductName>
  <UomCode>KG</UomCode>
  <Quantity>8.20</Quantity>
  <UnitCost>23.000000</UnitCost>
</GoodsReceiveNoteItemView>

 

;with t_table as
(
    select (CONVERT(xml,ItemsXml)) ix from wh.vw_ReportGoodsReceiveNote
)
select (select sum( t.value('Quantity[1]','decimal(18,2)')*t.value('UnitCost[1]','decimal(18,2)')) FROM ix.nodes('GoodsReceiveNoteItemView') x(t)) as TotalCost
from t_table 

2.单行转多行

;with t_table as
(
    select (CONVERT(xml,ItemsXml)) ix
    from wh.vw_ReportGoodsReceiveNote 
)
SELECT 
(select sum( t.value('Quantity[1]','decimal(18,2)')*t.value('UnitCost[1]','decimal(18,2)')) FROM t1.ix.nodes('GoodsReceiveNoteItemView') x(t)) as TotalCost
,t2.*
from t_table t1
OUTER APPLY(
    SELECT t.value('ProductName[1]','varchar(200)') as GRN_Product
    ,t.value('Quantity[1]','decimal(18,2)') as GRN_Qty
    ,t.value('UomCode[1]','varchar(200)') as GRN_Unit 
    ,(t.value('UnitCost[1]','decimal(18,2)')*t.value('Quantity[1]','decimal(18,2)')) as GRN_Amount 
    FROM t1.ix.nodes('GoodsReceiveNoteItemView') x(t)
) t2

 

标签:XML,KRCK,18,decimal,value,Live,SQL,解析,select
From: https://www.cnblogs.com/FH-cnblogs/p/16595761.html

相关文章

  • 代码审计(Java)——WebGoat_SqlInjection
    一、SqlInjection_introduction1.这里level1-8就不说了,都是介绍+简单的sql语句,直接上level9这里可以看到,是给出了选择框的一道题,OWASP真不错,生怕你不会哈哈~......
  • 使用 Canal 和 Kafka 与 RDS MySQL 进行 Redis 数据同步
    教程:https://www.alibabacloud.com/blog/redis-data-synchronization-with-rds-mysql-using-canal-%26-kafka_598072源码:https://github.com/alibabacloud-howto/soluti......
  • windows下Mysql安装
    1.首先去MySQL的官网下载安装包https://downloads.mysql.com/archives/community/点下download下载至本地2.下载好mysql安装包后,将其解压到指定目录,并记下解压的目录,后......
  • 关于 mysql5.7 中 创建一个用户 并为其 grant 权限 操作失败的问题
    SQL:--创建授权canal账号具有slave权限--查看密码策略状态selectplugin_name,plugin_statusfrominformation_schema.pluginswhereplugin_namelike'val......
  • Pandas+ SLS SQL:融合灵活性和高性能的数据透视
    简介: Pandas是一个十分强大的python数据分析工具,也是各种数据建模的标准工具。Pandas擅长处理数字型数据和时间序列数据。Pandas的第一大优势在于,封装了一些复杂的代码实......
  • SQL聚合函数:
    聚合函数:AVG(表达式)返回表达式中所有的平均值。仅用于数字列并自动忽略NULL值。COUNT(表达式)返回表达式中非NULL值的数量。可用于数字和字符列。COUNT(*)返回表中的行......
  • 技术分享 | App常见bug解析
    原文链接功能Bug内容显示错误前端页面展示的内容有误。这种错误的产生有两种可能1、前端代码写的文案错误2、接口返回值错误功能错误功能错误是在测试过程中最常......
  • Mysql 简单笔记
    一、保留两位小数1.用于数据的四舍五入,round(x) ,其实就是round(x,0),也就是默认d为0;二、字符串拼接CONCAT()三、判断数量COUNT(IF(stuWorkSta......
  • mysql 之 my.ini 配置
    mysql之my.ini配置 1. max_allowed_packet 配置在mysqld节点下添加,配置MySQL允许的最大数据包大小,下面的500M你可以根据你的项目修改为你自己的值,只要比要导入......
  • sql 查询
    慢查询的原因https://blog.csdn.net/weixin_45393094/article/details/1256669971、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)  使用expla......