Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Осигурени данни в T-SQL

Ако използвате SQL Server 2005 (или по-нова версия), ето кода:

DECLARE @cols VARCHAR(1000)
DECLARE @sqlquery VARCHAR(2000)

SELECT  @cols = STUFF(( SELECT distinct  ',' + QuoteName([Month])
                        FROM YourTable FOR XML PATH('') ), 1, 1, '') 


SET @sqlquery = 'SELECT * FROM
      (SELECT Person, Month, Paid
       FROM YourTable ) base
       PIVOT (Sum(Paid) FOR [Person]
       IN (' + @cols + ')) AS finalpivot'

EXECUTE ( @sqlquery )

Това ще работи без значение колко различни статуса имате. Той динамично събира заявка с PIVOT . Единственият начин да направите PIVOT с динамични колони е чрез динамично сглобяване на заявката, което може да се направи в SQL Server.

Други примери:

  • Може би SQL Server PIVOT?
  • Как да създам обобщение, като се присъединя към една таблица със SQL Server?


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преобразувайте редовете в колони с помощта на „Pivot“ в SQL Server

  2. Използване на резултата от израз (например извикване на функция) в списък с параметри на запомнени процедури?

  3. Как да експортирате данни на SQL Server от таблица в CSV файл

  4. Оптимален начин за конкатенация/обединяване на низове

  5. Връщане на списък със схеми на дялове в SQL Server (T-SQL)