Tablodaki öğelere (olduğu gibi COLUMN LIKE='Value%') göre gruplamak mümkün müdür PIVOT? Ben bir tablo [DBT] var. [Durum] çeşitli durumlar (veritabanları, örnekler, vb.) İçerir ve pivot / sorgu tüm PROD ve TEST değerlerini tek değerler olarak, ancak gruplandırmak istemiyorum.
Örneğin Yerine durumları için sütunlar sahip Prod, Prod ACC, Prod APP, .. vb ben ilişkin değerleri içeren tek bir sütun olurdu Name LIKE 'Prod%'ve Name LIKE 'Test%'.
Şimdiye kadar ne var:
Tablo Tanımı
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]
GO
Tablo Değerleri
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')
Pivotlanmış Durum Tablosu
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 PivotTable
Çıktı
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 1
db <> keman
Dbfiddle şimdiye kadar.
Soru
Çeşitli Test... ve Prod....değerler için birden çok satıra sahip olmak yerine, bunları aşağıdakilere benzer şekilde gruplandırmayı tercih ederim:
DB Status | Test | Prod | Migrated | Offline | Reserved
--------------- | ---- | ---- | -------- | ------- | --------
Database Status | 4 | 4 | 1 | 1 | 1
Sorumu nasıl çözeceğime dair hiçbir fikrim yok. (Dürüst olmak gerekirse, sadece kapsamlı deneme ve hatalardan sonra dün PIVOT'u yakaladım).
Bu soru, zaten sorduğum birden çok tablo üzerinde gruplanmış öğelerin toplamları / sayıları nasıl oluşturulur sorusuyla ilgili . [DBT]. [Örnek] ve [DBT]. [Veritabanı] tabloları, [StatusID] ile şu anda baktığımız tabloya karşılık gelen bir sütun içeriyor.