2016-04-11 3 views
-1

Ich möchte dies zu einer parametrisierten gespeicherten Prozedur hinzufügen. Ich habe Code, um es so zu sortieren, aber es ist nur eine Auswahlanweisung.Gespeicherte Prozedur zum Sortieren einer Zeile mit anderen Zeilenplätzen

SELECT * 
FROM [AdventureWorks2014].[Person].[CountryRegion] 
ORDER BY 
    CASE CountryRegionCode 
     WHEN 'GB' THEN '1' 
     WHEN 'BR' THEN '2' 
     ELSE Name 
    END 
GO 

In diesen Bildern könnte alles klar sein, was ich gerne machen würde. Vor und nach der Sortierung. Vielen Dank!

Before image sort.

After result sort.

+1

Wenn es funktioniert, warum benötigen Sie eine gespeicherte Prozedur? – jarlh

+0

Ursache Ich möchte zur Benutzereingabe die gespeicherte Prozedur. –

Antwort

1

Eine andere Möglichkeit, es zu tun

CREATE PROCEDURE yourProcedureName @RegionCode nvarchar(2) 
    AS 
    SELECT * 
    FROM [AdventureWorks2014].[Person].[CountryRegion] 
    WHERE CountryRegionCode = @RegionCode 
    UNION ALL 
     SELECT * 
    FROM [AdventureWorks2014].[Person].[CountryRegion] 
    WHERE CountryRegionCode = @RegionCode 
    --Any order by you need 
    END 
    GO 

Und nennen Sie es mit sortieren:

EXEC yourProcedureName @RegionCode = 'GB' 
+0

Aber wenn ich die Platte an einem anderen Ort nach der anderen verlegen möchte? Zum Beispiel 60? –

+0

@RaimondsPlume: es wird schnell unordentlich. Möchten Sie, dass jede Zeile die gleiche Reihenfolge hat? Oder eine andere benutzerdefinierte Reihenfolge jedes Mal? – gbn

+0

Verschiedene benutzerdefinierte Reihenfolge jedes Mal. Wenn ich die Zeile 40 brauche, um in Zeile 70 zu gehen, wie zwei Datensätze ändern ... –

4

ich dies persönlich würde verwenden. namentlich nach die Präferenz Art

CREATE PROCEDURE yourProcedureName 
    @RegionCode nvarchar(2) 
AS 
--your select 
    ORDER BY 
     CASE CountryRegionCode 
      WHEN @RegionCode THEN 1 
      ELSE 2 
     END, 
     Name 
+0

Ja, es zeigt das gleiche Ergebnis, aber ich möchte Stored Procedure mit Benutzereingaben sehen. Beispiel: Es gibt 200 Länder, Land mit Reihennummer 120 Ich möchte an der Spitze der Tabelle setzen, dass es jetzt Nummer 1 ist. Und die Nummer eins, die jetzt war, ist 120. –

+1

Vielen Dank an @NullException für die erste Bearbeitung – gbn

0

Dies war das Ergebnis, was ich brauchte und was arbeitete, um einen Datensatz unter dem angegebenen Parametersatz zu ersetzen.

ALTER PROCEDURE something 
@CountryRegionCode nvarchar(3), 
@Name nvarchar(50) 

AS 
SELECT Name,CountryRegionCode,ModifiedDate FROM [AdventureWorks2014].[Person].[CountryRegion] 
    ORDER BY 
    CASE CountryRegionCode 
    WHEN @CountryRegionCode THEN @Name 
    ELSE Name 
    END 
Verwandte Themen