0

CTE の結果は、変数テーブル名 @tbl に格納されます。

MenuItemID、ParentID(PID)、MenuIDでMenuItemsのOrder(SO)を設定したい。そのために Cursor を使用しようとしましたが、複雑すぎてわかりません。

編集: 実際には、サンプル データの SO (順序) は、連続している必要があるため、順序どおりではありません。階層と現在のSOのように順序を再設定したい:

現在の SO (非連続):

1   5   2   9   10  6   7

訂正:

1   2   1   2   3   3   4

> 1
> 2
    > 1
    > 2
    > 3
> 3
> 4

@tbl 内容:

MenuItemID                              ParentID                                MenuID                                  SO   Level
D3B92D1B-7AFA-4E11-AF01-9F6A00B1B2A9    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    1    0
F5833F72-A739-47D6-B30C-A19600F03E91    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    5    0
5C2AC1F8-DEE0-448B-B538-A19600F0839B    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    6    0
3A1096E7-5FD2-4F77-9729-A19600973BDF    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    7    0
EBB5FFF0-4407-436B-BCE8-A1A0010A1A88    F5833F72-A739-47D6-B30C-A19600F03E91    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    2    1
45077C15-3A47-43E2-92A1-A19C013C2D9C    F5833F72-A739-47D6-B30C-A19600F03E91    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    9    1
9DDB77B9-C9E8-48AF-8F1E-A1960097329A    F5833F72-A739-47D6-B30C-A19600F03E91    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    10   1

そして、私が望む結果は次のようになります。

(MenuItems は、レベル、SO (並べ替え順序) で並べ替える必要があります)

MenuItemID                              ParentID                                MenuID                                  SO   Level
D3B92D1B-7AFA-4E11-AF01-9F6A00B1B2A9    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    1    0
F5833F72-A739-47D6-B30C-A19600F03E91    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    2    0
EBB5FFF0-4407-436B-BCE8-A1A0010A1A88    F5833F72-A739-47D6-B30C-A19600F03E91    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    1    1
45077C15-3A47-43E2-92A1-A19C013C2D9C    F5833F72-A739-47D6-B30C-A19600F03E91    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    2    1
9DDB77B9-C9E8-48AF-8F1E-A1960097329A    F5833F72-A739-47D6-B30C-A19600F03E91    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    3    1
5C2AC1F8-DEE0-448B-B538-A19600F0839B    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    3    0
3A1096E7-5FD2-4F77-9729-A19600973BDF    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    C0489C0C-18C7-4D9A-8FC2-A19A00CDB99E    4    0

そして、使用する予定だったカーソルは次のようなものですが、どうすればよいかわかりません。

declare @id uniqueidentifier
declare cur CURSOR LOCAL for
    SELECT MenuItemID FROM @tbl order by lvl
open cur
    fetch next from cur into @id
    while @@FETCH_STATUS = 0 BEGIN
        ???
    fetch next from cur into @id
    end
close cur
deallocate cur

そして、ここにテーブル (@tbl) 構造があります:

declare @tbl table (MenuItemID uniqueidentifier, PID uniqueidentifier, MenuID uniqueidentifier, SO tinyint, lvl tinyint)

誰かが私を助けてくれれば幸いです。

前もって感謝します、

カルド

4

1 に答える 1