Я работаю над запросом для SQL Server 2012. У меня проблема: я не могу добавить единицу столбца в @Header
.
Когда строка во временной таблице #nonparametric
имеет флаг Allow
установлен в 1, он должен иметь два столбца на единицу.
Здесь у меня есть флаг, позволяющий установить значение 1 для каждой семьи и параметр c, поэтому он должен содержать @Header
.
есть ParametricUnit, familyUnit, потому что у меня есть Flag Allow = 1 для параметров c и family в таблице temp
в # nonparametri c temp table.
с другим значением в таблице #nonparametri c Я получу все DKFeatureName с флагом Allow 0 будет иметь один
столбец, но DkFeatureName с Flag Allow = 1 будет иметь дополнительный столбец для каждого модуля, его имена будут столбцом + 'Unit' для переменной @Header.
create table #nonparametricdata
(
PART_ID nvarchar(50) ,
CompanyName nvarchar(50),
PartNumber nvarchar(50),
DKFeatureName nvarchar(100),
Tempvalue nvarchar(50),
FlagAllow bit
)
insert into #nonparametricdata
values
('1222','Honda','silicon','package','15.50Am',0),
('1900','MERCEIS','GLASS','family','90.00Am',1),--have column per Unit on @Header because FlagAllow=1
('5000','TOYOTA','alominia','source','70.20kg',0),
('8000','MACDA','motor','parametric','50.40kg',1),--have column per Unit on @Header because FlagAllow=1
('8900','JEB','mirror','noparametric','75.35kg',0)
create table #FinalTable
(
DKFeatureName nvarchar(50),
DisplayOrder int
)
insert into #FinalTable (DKFeatureName,DisplayOrder)
values
('package',3),
('family',4),
('source',5),
('parametric',2),
('noparametric',1)
то, что я пробую, показано ниже:
DECLARE @Header NVARCHAR(MAX)
SELECT
@Header = STUFF(
(
SELECT ', ' + QUOTENAME (DKFeatureName)
FROM #FinalTable
ORDER BY DisplayOrder
FOR XML PATH ('')
),1,2,''
)
select @Header
Ожидаемый результат:
[noparametric], [parametric],[parametricUnit], [package], [family],[familyUnit], [source]