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

Sử dụng thuộc tính nhiều lần trong truy vấn FOR XML Path T-SQL có cùng tên phần tử

Các phương pháp phím tắt có thể không cắt nó cho việc này. AUTO và PATH không thích nhiều phần tử có cùng tên. Có vẻ như bạn sẽ phải sử dụng ĐỂ KHAI THÁC XML lệnh.

Nó hoạt động, nhưng cồng kềnh.

Mẫu:

--Generate Sample Data
--FOR XML EXPLICIT requires two meta fields: Tag and Parent
--Tag is the ID of the current element.
--Parent is the ID of the parent element, or NULL for root element.

DECLARE @DataTable as table
   (Tag int NOT NULL
   , Parent int
   , TaxonomyValue nvarchar(max)
   , CategoryValue nvarchar(max)
   , CategoryLevel int)

--Fill with sample data: Category Element (2), under Taxonomy(1), with no Taxonomy value.
INSERT INTO @DataTable
VALUES (2, 1, NULL, 1, 'Clothing')
     , (2, 1, NULL, 2, 'Jeans')

--First part of query: Define the XML structure
SELECT
   1 as Tag  --root element
   , NULL as Parent
   , NULL as [Taxonomy!1]       --Assign Taxonomy Element to the first element, aka root.
   , NULL as [Category!2]       --Assign Category Element as a child to Taxonomy.
   , NULL as [Category!2!Level] --Give Category an Attribute 'Level'

--The actual data to fill the XML
UNION
SELECT
   Data.Tag
   , Data.Parent
   , Data.TaxonomyValue
   , Data.CategoryValue
   , Data.CategoryLevel
FROM
   @DataTable as Data
FOR XML EXPLICIT

Tạo XML

<Taxonomy>
  <Category Level="1">Clothing</Category>
  <Category Level="2">Jeans</Category>
</Taxonomy>

Chỉnh sửa:Đã đảo ngược các cột. Không còn cấp độ Quần jean.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để mô phỏng UNPIVOT trong Access?

  2. Nối chuỗi SQL Server với Null

  3. Làm cách nào để chạy nhiều lệnh SQL trong một kết nối SQL?

  4. Cách sử dụng FILEPROPERTY () trong SQL Server

  5. Đổi tên khóa chính trong SQL Server (T-SQL)