Rajat-Indiandotnet
Для динамических столбцов вы можете попробовать следующее решение
CREATE table #source (AccountNo varchar(2), GSTNumber varchar (5) ,GSTAmount INT)
insert into #source (AccountNo, GSTNumber,GSTAmount) values
('A1', 'GST1',1231),
('A1', 'GST2',1232),
('A1', 'GST3',1233),
('A2', 'GST1',1241),
('A2', 'GST2',1242),
('A3', 'GST1',1243),
('A3', 'GST2',1244),
('A3', 'GST3',1251),
('A3', 'GST4',1252),
('A4', 'GST1',1253)
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
SELECT @cols = STUFF
(
(
SELECT ',' + QUOTENAME(GSTNumber)
FROM #source
GROUP BY GSTNumber
ORDER BY GSTNumber
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'),
1,1,''
);
SET @query = 'SELECT AccountNo,' + @cols + '
FROM
(
SELECT AccountNo,GSTNumber,GSTAmount
FROM #source
) x
PIVOT
(
MAX(GStAmount)
FOR GSTNumber IN (' + @cols + ')
) p ';
EXECUTE(@query);
sunil mali
Привет Раджат,
Большое вам спасибо за объяснение,
Но была проблема в моем объяснении вопроса, который я обновил, не могли бы вы, пожалуйста, оглянуться назад и вернуться ко мне.
sunil mali
Позвольте мне объяснить вам логику в деталях.
1. Одна учетная запись может иметь несколько кодов ОКП.
2. ГСТ количество меченых против Счет1 там не будет за помощью account2
Согласно вашему предложению, вы хотите, чтобы я создавал столбцы на основе чисел GST, поэтому, если есть 100000 чисел gst, я должен создать 100000 столбцов gst.
Я этого не хочу,
Я хочу, чтобы если Acount1 имеет 3 номера gst, то данные будут поступать только в column1, column2 и column3
Если Account2 имеет 2 номера gst, то данные будут поступать только в Column1 & Column2
Если учетная запись 3 имеет только 1 номер gst, то данные будут поступать только в столбец 1.
если Account4 имеет номера 10gst, то выходная таблица должна иметь column1...column10
и каждый столбец должен иметь разные номера gst.
sunil mali
Если вы посмотрите на мою выходную таблицу, вы поймете, что я пытаюсь сказать.
Я не могу выполнить логику в соответствии с вашим предложением, так как это приведет к созданию множества столбцов.