Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

uporządkować według parametru

Masz 2 opcje, albo użyj instrukcji CASE, albo użyj dynamicznego sql

To byłby przykład instrukcji CASE

DECLARE @Table TABLE(
        Col1 VARCHAR(10),
        Col2 VARCHAR(10)
)

DECLARE @OrderBy VARCHAR(100)

SET @OrderBy = 'Col1'

SELECT  *
FROM    @Table
ORDER BY 
        CASE
            WHEN @OrderBy = 'Col1' THEN Col1
            WHEN @OrderBy = 'Col2' THEN Col2
            ELSE Col1
        END

A to byłby przykład dynamicznego sql

CREATE TABLE #Table (
        Col1 VARCHAR(10),
        Col2 VARCHAR(10)
)

DECLARE @OrderBy VARCHAR(100)

SET @OrderBy = 'Col1'

DECLARE @SqlString NVARCHAR(MAX)

SELECT @SqlString = 'SELECT * FROM #Table ORDER BY ' + @OrderBy

EXEC(@Sqlstring)

DROP TABLE #Table


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy MS SQL Server między obejmuje granice zakresu?

  2. Zmień kolejność kolumn pojawiających się w wynikach bez zmiany kolejności zaznaczania

  3. Dlaczego serwer sql przechowuje znaki zapytania zamiast znaków japońskich w polach NVarchar?

  4. Wyświetl listę wszystkich kolumn dopuszczających wartość null w bazie danych programu SQL Server

  5. SQL zaznacz wszystko, jeśli parametr ma wartość null, w przeciwnym razie zwróć określoną pozycję