簡體   English   中英

使用T-SQL更新XML格式的列選擇數據SQL表

[英]To update a column in XML Format Selecting data SQL Table using T-SQL

我在SQL表中有數據,我想查詢XML格式(使用For XML)或任何最佳做法的現有數據的某些列,然后將XML FOrmat更新為具有XML數據類型的同一表中的列。在下面的示例中,Node SALARY不是列名,而是一個常數。 (在此示例中,有2條AMT列,如AMT1和AMT2,有時可能會隨着AMT3的不同而變化),因此,SALARY NODE也應隨下一個數字遞增。如果有任何建議如何使用它將非常有幫助。 我的數據格式為:


EMPNAME  YEAR     MONTH AMT1     AMT2
smith     2013     jan  5000     6000
Ray       2014     feb  4000     5000
Jones     2013     apr  6000     3000

我想要的XML格式是:

<EMPLOYEE>
  <EMPNAME>Smith</EMPNAME>
  <SALARYDETAILS>
     <SALARY>1<SALARY>
     <AMOUNT>5000</AMOUNT>
     <SALARY>2<SALARY>
     <AMOUNT>6000</AMOUNT>
  </SALARYDETAILS>
</EMPLOYEE>
<EMPLOYEE>
      <EMPNAME>Ray</EMPNAME>
      <SALARYDETAILS>
         <SALARY>1<SALARY>
         <AMOUNT>4000</AMOUNT>
         <SALARY>2<SALARY>
         <AMOUNT>5000</AMOUNT>
      </SALARYDETAILS>
    </EMPLOYEE>

我嘗試過這樣的基本SQL,但不確定如何在其中添加不是'SALARYDETAILS'之類的sql列的節點

SELECT  EMPNAME ,AMT1,AMT2 FROM  EMPLOYEE
FOR XML RAW  (''), ROOT ('EMPLOYEE') - This SQL also gives error as Empty Tags cannot be passed 

謝謝Mikael,這非常有幫助,我可以得到指定虛擬節點的想法,但是要求是,數量的節點數可能會根據數據而有所不同,因此SALARY節點也將取決於此。可能只是一個AMT1,有些可能有3個AMT列..因此它可能有所不同,因此查詢必須動態構建。 我什至可以使用存儲過程。 謝謝 ..

嗨,任何想法如何在存儲過程中連接2個xml變量。

如果我了解您想要的內容,則只需在查詢中將薪金節點指定為常量。

select E.EMPNAME,
       1      as 'SALARYDETAILS/SALARY',
       E.AMT1 as 'SALARYDETAILS/AMOUNT',
       2      as 'SALARYDETAILS/SALARY', 
       E.AMT2 as 'SALARYDETAILS/AMOUNT'
from EMPLOYEE as E
for xml path('EMPLOYEE')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM