sql >> Databáze >  >> RDS >> Sqlserver

SQL Server 2005 - Pivoting Data bez součtu / počtu a dynamického seznamu hodnot

Tohle se blíží tomu, co hledáte. Zahrnul jsem také skript pro vytváření tabulek a ukázková data pro ostatní k použití. Inspirace pro toto řešení pochází zde

-- Dynamic PIVOT
DECLARE @T AS TABLE(y INT NOT NULL PRIMARY KEY);

DECLARE
@cols AS NVARCHAR(MAX),
@y    AS INT,
@sql  AS NVARCHAR(MAX);

-- Construct the column list for the IN clause
-- e.g., [Dog],[Python]
SET @cols = STUFF(
(SELECT N',' + QUOTENAME(y) AS [text()]
FROM (SELECT DISTINCT [Value] AS y FROM dbo.table_1) AS Y
ORDER BY y
FOR XML PATH('')),
1, 1, N'');

-- Construct the full T-SQL statement
-- and execute dynamically
SET @sql = N'SELECT *
FROM (SELECT *
FROM dbo.table_1) AS D
PIVOT(MIN(value) FOR value IN(' + @cols + N')) AS P;';

PRINT @sql
EXEC sp_executesql @sql;
GO

Vytvoření tabulky:

CREATE TABLE [dbo].[Table_1](
    [Name] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
    [Value] [varchar](50) COLLATE Latin1_General_CI_AS NULL
) ON [PRIMARY]

GO

Ukázková data:

insert into dbo.table_1 values ('John','Dog')
insert into dbo.table_1 values ('John','Cat')
insert into dbo.table_1 values ('John','Fish')
insert into dbo.table_1 values ('Bob ','Python')
insert into dbo.table_1 values ('Bob ','Camel')


  1. Získání automatického doplňování jQuery pro práci se zdrojem PHP

  2. Pandy do Oracle přes SQL Alchemy:UnicodeEncodeError:kodek „ascii“ nemůže zakódovat znak

  3. nainstalujte cx_oracle pro python

  4. Laravel 5.1 - Homestead MySQL připojení. `Připojení odmítnuto` &`Žádný takový soubor nebo adresář`