[英]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.