sql >> Database teknologi >  >> RDS >> Sqlserver

rækkefølge efter en parameter

Du har 2 muligheder, enten brug en CASE-sætning eller brug dynamisk sql

Dette ville være et eksempel på CASE-erklæringen

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

Og dette ville være et eksempel på dynamisk 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. Mysql ydeevne på 6 millioner rækker bord

  2. Hvorfor er Hibernate skiftet til at bruge LONG over CLOB?

  3. betinget valg-erklæring i oracle

  4. Importerer wikipedia-dump til SQL-base