我想從xml輸入參數創建一個臨時表。 這是我的XML:sql server 2005使用xml參數創建臨時表
<Offices>
<Group id="22807">
<Office>185901</Office>
<Office>185902</Office>
<Office>185944</Office>
</Group>
</Offices>
這是我的SQL:
DECLARE @GroupsOfficeIDs xml
SET @GroupsOfficeIDs = '<Offices><Group id="22807"><Office>185901</Office><Office>185902</Office><Office>185944</Office></Group></Offices>'
CREATE TABLE #GroupOfficeID (PK int primary key identity(1,1), IdXml xml)
INSERT INTO #GroupOfficeID VALUES (@GroupsOfficeIDs)
SELECT PK,
group.ref.value('@id', 'int') AS GroupID,
group.ref.value('(Office/text())[1]', 'varchar(20)') AS OfficeID
FROM #GroupOfficeID go cross apply go.IdXml.nodes('/Offices/Group') group(ref)
這將返回1行:
PK GroupID OfficeID
1 22807 185901
我想它返回如下:
PK GroupID OfficeID
1 22807 185901
2 22807 185902
3 22807 185944
是我的XM L這是錯誤的或我的查詢? 謝謝!
UPDATE 我遠一點...... 我現在查詢是這樣的:
DECLARE @GroupsOfficeIDs xml
SET @GroupsOfficeIDs = '<Offices><Group id="22807"><Office>185901</Office><Office>185902</Office><Office>185944</Office></Group></Offices>'
CREATE TABLE #GroupOfficeID (PK int primary key identity(1,1), IdXml xml)
INSERT INTO #GroupOfficeID VALUES (@GroupsOfficeIDs)
SELECT PK,
group.ref.value('@id', 'int') AS GroupID,
office.ref.value('(Office/text())[1]', 'varchar(20)') AS OfficeID
FROM #GroupOfficeID go cross apply go.IdXml.nodes('/Offices/Group') group(ref)
cross apply go.IdXml.nodes('/Offices/Group/Office') as office(ref)
它產生這樣的:
PK GroupID OfficeID
1 22807 185901
1 22807 185902
1 22807 185944
爲什麼不主鍵增量由1?
你被它給一個結果ID分組。 – jdweng
我在哪裏按ID分組? –
重新閱讀發佈。看起來不像分組是問題。你是正確的PK沒有得到增加。您必須創建一個自動遞增主鍵PK的過程。 – jdweng