यहां आप पिवट में कॉलम के रूप में दिखाने के लिए कॉलम में मानों का चयन करेंगे
DECLARE @cols NVARCHAR (MAX)
SELECT @cols = COALESCE (@cols + ',[' + AvJT + ']', '[' + AvJT + ']')
FROM (SELECT DISTINCT AvJT FROM YourTable) PV
ORDER BY AvJT
अब क्वेरी को पिवट करें
DECLARE @query NVARCHAR(MAX)
SET @query = 'SELECT * FROM
(
SELECT date_1, StartHour,AvJT, data_source
FROM YourTable
) x
PIVOT
(
-- Values in each dynamic column
SUM(data_source)
FOR AvJT IN (' + @cols + ')
) p;'
EXEC SP_EXECUTESQL @query
- यहां क्लिक करें परिणाम देखने के लिए
यदि आप ऐसा करना चाहते हैं जहां कॉलम नाम गतिशील नहीं हैं, तो आप नीचे दी गई क्वेरी कर सकते हैं
SELECT DATE_1,STARTHOUR,
MIN(CASE WHEN AvJT='00001a' THEN data_source END) [00001a],
MIN(CASE WHEN AvJT='00002a' THEN data_source END) [00002a],
MIN(CASE WHEN AvJT='00003a' THEN data_source END) [00003a],
MIN(CASE WHEN AvJT='00004a' THEN data_source END) [00004a]
FROM YOURTABLE
GROUP BY DATE_1,STARTHOUR
- यहां क्लिक करें परिणाम देखने के लिए
संपादित करें:
मैं आपके अपडेट किए गए प्रश्न के लिए अपडेट कर रहा हूं।
data_source
को फ़िल्टर करने के लिए वैरिएबल घोषित करें
DECLARE @DATASOURCE VARCHAR(20) = '1'
QUOTENAME
. के बजाय , आप पिवट के लिए कॉलम प्राप्त करने के लिए किसी अन्य प्रारूप का उपयोग कर सकते हैं
DECLARE @cols NVARCHAR (MAX)
SELECT @cols = COALESCE (@cols + ',[' + Link_ID + ']', '[' + Link_ID + ']')
FROM (SELECT DISTINCT Link_ID FROM C1_May_Routes WHERE [email protected]) PV
ORDER BY Link_ID
अब पिवट करें
DECLARE @query NVARCHAR(MAX)
SET @query = 'SELECT * FROM
(
-- We will select the data that has to be shown for pivoting
-- with filtered data_source
SELECT date_1, StartHour,AvJT, Link_ID
FROM C1_May_Routes
WHERE data_source = '[email protected]+'
) x
PIVOT
(
-- Values in each dynamic column
SUM(AvJT)
-- Select columns from @cols
FOR Link_ID IN (' + @cols + ')
) p;'
EXEC SP_EXECUTESQL @query
- यहां क्लिक करें परिणाम देखने के लिए