क्या COLUMN LIKE='Value%'
किसी PIVOT
तालिका में तत्वों (जैसे ) द्वारा समूह बनाना संभव है ? मेरे पास एक टेबल है [डीबीटी]। [स्टेटस] जिसमें विभिन्न स्टेटस (डेटाबेस, इंस्टेंस आदि) होते हैं और सभी PROD और TEST मानों को सिंगल वैल्यू के रूप में पिवट / क्वेरी नहीं करना चाहते हैं, लेकिन उन्हें ग्रुप करें।
उदाहरण के बजाय स्थितियों के लिए कॉलम होने के 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
डाटाबेस <> बेला
Dbfiddle अब तक।
सवाल
विभिन्न Test...
और Prod....
मानों के लिए कई पंक्तियों के बजाय , मैं उन्हें निम्न के समान समूहबद्ध करना पसंद करूंगा:
DB Status | Test | Prod | Migrated | Offline | Reserved
--------------- | ---- | ---- | -------- | ------- | --------
Database Status | 4 | 4 | 1 | 1 | 1
मेरे पास कोई सवाल नहीं है कि मैं अपने प्रश्न को हल करने के बारे में कैसे जाऊं। (ईमानदार होने के लिए मैंने केवल व्यापक परीक्षण और त्रुटियों के बाद कल PIVOT को पकड़ लिया)।
यह सवाल इस सवाल से संबंधित है कि मैंने पहले से ही पूछी गई कई तालिकाओं पर समूहीकृत वस्तुओं की रकम / गिनती कैसे बनाई । तालिकाओं [DBT]। [उदाहरण] और [DBT]। [डेटाबेस] [StatusID] के साथ एक कॉलम होता है जो उस तालिका से मेल खाता है जिसे हम अभी देख रहे हैं।