Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server 2005 - Przestawianie danych bez sumy/liczby i dynamicznej listy wartości

To zbliża się do tego, czego szukasz. dołączyłem również skrypt tworzenia tabeli i przykładowe dane do wykorzystania przez innych. Inspiracją dla tego rozwiązania była tutaj

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

Tworzenie tabeli:

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

Przykładowe dane:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przekazywanie typu tabeli zdefiniowanego przez użytkownika między bazą danych SQL Server

  2. Jakie są zalety używania składni konstruktora wierszy w instrukcji insert T-Sql?

  3. Obliczanie dni do wyłączenia weekendów (od poniedziałku do piątku) w SQL Server

  4. ROLLBACK OBCIĄŻONY w SQL Server

  5. SQL Server wykonuje kopię zapasową za pomocą C#