Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server 2005 Pivot Dinamis

Saya telah melakukan terlalu banyak kueri dinamis ini akhir-akhir ini... (kolom saya digeser oleh klien per bulan). Berikut salah satu cara untuk melakukannya--tanpa pengujian, tanpa debug, mungkin ada beberapa bug yang perlu diperbaiki:

DECLARE
  @Command     nvarchar(max)
 ,@ColumnList  nvarchar(max)
 ,@OrderId     int
 ,@Debug       bit


--  Build a comman-delimited list of the columns
SELECT @ColumnList = isnull(@ColumnLIst + ',', , '') + ColName
 from dbo.GetTableColumnNames('OrderCash', 2)


--  Insert the list of columns in two places in your query
SET @Command = replace('
SELECT  OrderID, 
        CurrCode + ‘‘GBP CURNCY’‘ AS Ticker, 
        Cash AS Position 
FROM 
( 
    SELECT OrderID, <@ColumnList>
    FROM OrderCash 
) p 
UNPIVOT 
( 
    Cash FOR CurrCode IN  
    (<@ColumnList>) 
) AS unpvt 
WHERE Cash != 0 
And OrderID = @OrderId
', '<@ColumnList>', @ColumnList)


--  Always include something like this!
IF @Debug = 1
    PRINT @Command

--  Using sp_executeSQL over EXECUTE (@Command) allows you execution
--  plan resuse with parameter passing (this is the part you may need
--  to debug on a bit, but it will work)
EXECUTE sp_executeSQL @Command, N'@OrderId int', @OrderId



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buat diagram hubungan tabel dari skema yang ada (SQL Server)

  2. Memperbarui baris dalam tabel berdasarkan sub kueri pada tabel yang sama

  3. Bisakah saya terhubung ke SQL Server menggunakan Otentikasi Windows dari aplikasi web Java EE?

  4. Bagaimana cara memperbaiki Microsoft SQL Server, Kesalahan:262?

  5. sintaks untuk baris tunggal MERGE/upsert di SQL Server