sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server 2005 - Pivoterande data utan summa/antal och dynamisk värdelista

Det här kommer nära det du är ute efter. Jag har också inkluderat ett skript för att skapa tabeller och exempeldata som andra kan använda. Inspiration till denna lösning kom från här

-- 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

Skapa tabell:

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

Exempeldata:

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. Returnera Tidsstämpel Med Förberedd Utlåtande

  2. Hur skickar man e-postmeddelanden när förfluten tid når specifika timmar automatiskt?

  3. Bestäm logik för MySQL Select - Reservation System

  4. Hur ser man CREATE VIEW-koden för en vy i PostgreSQL?