हम (ab) ROW_NUMBER()
का उपयोग कर सकते हैं XQuery के बाहर आईडी जेनरेट करने के लिए। प्रस्तावना:
WITH questions AS (
SELECT
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS ID,
n.q.value('(./questionText)[1]', 'nvarchar(max)') AS questionText,
n.q.value('(./result)[1]', 'nvarchar(50)') AS result,
n.q.query('answer') AS answers
FROM
@xml.nodes('/quizresult/question') AS n (q)
), questions_and_answers AS (
SELECT ID, questionText, result, answer.query('.') AS answer
FROM questions
CROSS APPLY answers.nodes('answer') AS a(answer)
)
और अब
. के साथ प्रश्नों को पुनः प्राप्त करेंSELECT ID, questionText, result
FROM questions
और जवाब
. के साथSELECT ID AS questionID,
q.answer.value('answer[1]', 'nvarchar(max)') AS answer,
q.answer.value('answer[1]/@number', 'int') AS number,
q.answer.value('answer[1]/@value', 'int') AS val,
q.answer.value('answer[1]/@chosen', 'bit') AS chosen
FROM questions_and_answers AS q