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

SQL Server PIVOT може би?

Тъй като използвате SQL Server 2005, ето кода:

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

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


SET @sqlquery = 'SELECT * FROM
      (SELECT Name2, Name1, Value
       FROM myTable ) base
       PIVOT (Sum(Value) FOR [Name1]
       IN (' + @cols + ')) AS finalpivot'

EXECUTE ( @sqlquery )

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

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

  • Опорни данни в T-SQL
  • Как да създам обобщение, като се присъединя към една таблица със SQL Server?
  • https://stackoverflow.com/q/8248059/570191


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да архивирате база данни на SQL сървър с помощта на T-SQL

  2. Брой пъти, когато даден знак се появява в низ

  3. SQL:анализирайте първото, средното и фамилното име от полето за пълно име

  4. CAST(DATETIME КАТО ДАТА) над клаузата WHERE

  5. Каква е целта на системната таблица master..spt_values ​​и какво е значението на нейните стойности?