¿Es posible agrupar por elementos (como en COLUMN LIKE='Value%') en una PIVOTtabla? Tengo una tabla [DBT]. [Estado] que contiene varios estados (de bases de datos, instancias, etc.) y no quiero pivotar / consultar todos los valores PROD y TEST como valores únicos, sino agruparlos.
Por ejemplo, lugar de tener columnas para los estados Prod, Prod ACC, Prod APP, .. etc que tendría sólo una columna que contiene los valores de Name LIKE 'Prod%'y Name LIKE 'Test%'.
Lo que tengo hasta ahora:
Definición de tabla
CREATE TABLE [DBT].[Status](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](50) NOT NULL,
 CONSTRAINT [PK_Status] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY],
 CONSTRAINT [IX_Status] UNIQUE NONCLUSTERED 
(
    [Name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
) ON [PRIMARY]
GOTabla de valores
INSERT INTO [DBT].[Status]
(
    -- ID -- this column value is auto-generated
    Name
)
VALUES
('Test ACC'),
('Test APP'),
('Test DBA'),
('Prod ACC'),
('Prod APP'),
('Prod DBA'),
('Prod'),
('Test'),
('Migrated'),
('Offline'),
('Reserved')La tabla de estado pivotada
SELECT 'Database Status' AS [DB Status], 
[1] AS [Test ACC], [2] AS [Test APP], [3] AS [Test DBA], [4] AS [Prod ACC], [5] AS [Prod APP], [6] AS [Prod DBA], [7] AS [Prod], [8] AS [Test], [9] AS [Migrated], [10] AS [Offline], [11] AS [Reserved] 
FROM 
(
    SELECT ID, Name  FROM [DBT].[Status]
) AS Source
PIVOT
(
    COUNT(Name) FOR ID IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11])
) AS PivotTableSalida hasta ahora
DB Status       Test ACC    Test APP    Test DBA    Prod ACC    Prod APP    Prod DBA    Prod        Test        Migrated    Offline     Reserved
--------------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
Database Status 1           1           1           1           1           1           1           1           1           1           1db <> violín
El dbfiddle hasta ahora.
Pregunta
En lugar de tener varias filas para los diversos Test...  y Prod....valores, preferiría agruparlos, de forma similar a lo siguiente:
DB Status       | Test | Prod | Migrated | Offline | Reserved   
--------------- | ---- | ---- | -------- | ------- | --------
Database Status |    4 |    4 |        1 |       1 |        1No tengo idea de cómo resolver mi pregunta. (Para ser honesto, acabo de comprender PIVOT ayer después de extensas pruebas y errores).
Esta pregunta está poco relacionada con la pregunta Cómo crear sumas / recuentos de elementos agrupados en varias tablas que ya he preguntado. Las tablas [DBT]. [Instancia] y [DBT]. [Base de datos] contienen una columna con el [StatusID] que corresponde a la tabla que estamos viendo ahora.
fuente
