Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Pivot sử dụng cột XML

Dưới đây là một ví dụ đơn giản có Cửa hàng có chi tiết Sản phẩm được lưu trữ trong xml. Trục xoay ở dưới cùng hiển thị các cửa hàng và tổng giá theo danh mục A và B.

declare @test Table
(

    StoreID int,
    ProdXml xml
)

insert into @test
select 1, '<product cat="A" name="foo" price="10" />' union
select 2, '<product cat="A" name="bar" price="12" />' union
select 1, '<product cat="B" name="blah" price="35" />' union    
select 2, '<product cat="B" name="bap" price="67" />' union
select 1, '<product cat="C" name="bip" price="18" />' union
select 2, '<product cat="A" name="bing" price="88" />' union
select 1, '<product cat="B" name="bang" price="34" />' union    
select 2, '<product cat="B" name="boom" price="65" />' 

--Pivot showing sum of price by Cat
select  StoreID, A, B
from
(   
    select  StoreID,
        ProdXml.value('/product[1]/@cat[1]','varchar(20)') as [ProdCat],
        ProdXml.value('/product[1]/@price[1]','int') as [ProdPrice]
    from  
        @test
) up
PIVOT (SUM([ProdPrice]) FOR [ProdCat] IN ( A, B)) as pvt
ORDER BY StoreID



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách nhanh nhất để kiểm tra xem một ký tự có phải là một chữ số không?

  2. Không thể sử dụng hiệu chính đặc biệt 'sa'

  3. Di chuyển Cơ sở dữ liệu SQL Server sang Đám mây

  4. làm thế nào để tổng hợp các giá trị từ một trục?

  5. OdbcCommand về thủ tục được lưu trữ - Lỗi thông số không được cung cấp trên tham số đầu ra