SQLserver-Reihenfolge nach IGNORE-NULL-Werten

Aus irgendeinem Grund kann ich die Tabelle nicht ändern oder die data jetzt aktualisieren. Hier das Problem:

Ich habe menu_user Tabelle unten:

 userID menuID (null) 2 (null) 3 1 3 2 1 3 2 4 5 5 0 

userID und menuID nicht dupliziert. Das Problem ist, wie man von ORDER BY userID, menuID aber wenn userID hat NULL-Wert zu userID , wird es für eine andere Zeile, die die gleiche menuID und platzieren Sie es nach dieser Zeile suchen. menuID nur max 2 gleichen Wert haben und wenn es hat, muss ein anderes NULL sein

Das Auftragsergebnis erwartet:

 userID menuID 1 3 (null) 3 2 1 3 2 (null) 2 4 5 5 0 

Hier das Skriptbeispiel:

 CREATE TABLE [dbo].[menu_user]( [userID] [int] NULL, [menuID] [int] NULL ); INSERT [dbo].[menu_user] ([userID], [menuID]) VALUES (NULL, 3); INSERT [dbo].[menu_user] ([userID], [menuID]) VALUES (1, 3); INSERT [dbo].[menu_user] ([userID], [menuID]) VALUES (2, 1); INSERT [dbo].[menu_user] ([userID], [menuID]) VALUES (3, 2); INSERT [dbo].[menu_user] ([userID], [menuID]) VALUES (4, 5); INSERT [dbo].[menu_user] ([userID], [menuID]) VALUES (5, 0); INSERT [dbo].[menu_user] ([userID], [menuID]) VALUES (NULL, 2); 

HINZUGEFÜGT Wenn möglich, möchte ich dieses Skript als View (nur SELECT mit No Variable).

Danke für Ihre Hilfe.

Das scheint den Trick zu machen. Sie müssen etwas tun, um mehrere Zeilen miteinander zu verknüpfen. Hier habe ich mich für eine left join :

 select m1.* from menu_user m1 left join menu_user m2 on m1.userID is null and m1.menuID = m2.menuID and m2.userID is not null order by COALESCE(m1.userID,m2.userID),m1.userID desc 

Ergebnis:

 userID menuID ----------- ----------- 1 3 NULL 3 2 1 3 2 NULL 2 4 5 5 0 

Hoffentlich kannst du sehen, wie es seine Ziele erreicht.

Überprüfen Sie dies, die Bestellung ist ein bisschen verwechselt, aber das gibt Ihnen das gewünschte Ergebnis.

 SELECT * FROM menu_user mu ORDER BY mu.menuID, CASE WHEN mu.userID IS NULL THEN mu.menuID END 

Versuchen Sie diese Abfrage:

 SELECT * FROM menu_user mu WHERE userID IS NOT NULL ORDER BY mu.menuID