เป็นไปได้ไหมที่จะจัดกลุ่มตามองค์ประกอบ (ดังในCOLUMN LIKE='Value%'
) ในPIVOT
ตาราง? ฉันมีตาราง [DBT] [สถานะ] ซึ่งมีสถานะต่าง ๆ (ของฐานข้อมูลอินสแตนซ์ ฯลฯ ) และไม่ต้องการหมุน / ค้นหาค่า PROD และการทดสอบทั้งหมดเป็นค่าเดียว
เช่นแทนที่จะมีคอลัมน์สำหรับสถานะProd
, Prod ACC
, Prod APP
.. ฯลฯ ฉันจะมีเพียงหนึ่งคอลัมน์ที่มีค่าสำหรับและName LIKE 'Prod%'
Name LIKE 'Test%'
สิ่งที่ฉันมี:
นิยามของตาราง
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
ค่าของตาราง
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')
ตารางสถานะ Pivoted
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
จนถึงตอนนี้
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 <> ซอ
dbfiddleเพื่อให้ห่างไกล
คำถาม
แทนที่จะมีหลายแถวสำหรับค่าTest...
และProd....
ค่าต่าง ๆฉันต้องการจัดกลุ่มให้คล้ายกับตัวอย่างต่อไปนี้:
DB Status | Test | Prod | Migrated | Offline | Reserved
--------------- | ---- | ---- | -------- | ------- | --------
Database Status | 4 | 4 | 1 | 1 | 1
ฉันไม่มีเงื่อนงำใด ๆ เกี่ยวกับการแก้ไขคำถามของฉัน (พูดตามตรงฉันเพิ่งเข้าใจ PIVOT เมื่อวานนี้หลังจากการลองผิดลองถูกมากมาย)
คำถามนี้เกี่ยวข้องกับคำถามอย่างคร่าว ๆวิธีสร้างผลรวม / นับของรายการที่จัดกลุ่มผ่านหลายตารางที่ฉันถามไปแล้ว ตาราง [DBT] [Instance] และ [DBT] [ฐานข้อมูล] มีคอลัมน์ที่มี [StatusID] ซึ่งสอดคล้องกับตารางที่เรากำลังดูอยู่ในขณะนี้