Как добавить значение объекта без предотвращения групповых данных на основе сводной таблицы itemid?
Я работаю на SQL server 2012
Я делаю сводную таблицу на основе itemId
это работает хорошо, но после добавления featurevalue данные повторяются
и не группировка
Как добавить Featurevalue без предотвращения повторных данных в сводной таблице ?
желаемый результат
ItemCode IPN PartnerName CustomerName Fan Refrigator temprature FeatureValue 1 1233 Saico Michel 1 2 1 1234 2 5433 Mbaby Michel 0 1 0 7777 3 44333 sadeoMany Michel 1 0 1 88888
Что я уже пробовал:
create table #InputData ( CustomerID uniqueidentifier ) insert into #InputData values ('0ce19920-f0ca-433c-abb1-4e84d52b618b') create table #customers ( CustomerID uniqueidentifier, CustomerName nvarchar(200) ) insert into #customers values ('0ce19920-f0ca-433c-abb1-4e84d52b618b','Michel'), ('188b8053-18c0-4092-955e-962f54485e43','Jakson') create table #FeatureType ( FeatureId int, FeatureName nvarchar(200) ) insert into #FeatureType values (1,'temprature'), (2,'Fan'), (3,'Refrigator') create table #Items ( ItemId int, IPN nvarchar(200), PartnerPart nvarchar(200), PartnerName nvarchar(100) ) insert into #Items values (1,'1233','Mobilic','Saico'), (2,'5433','Saldom','Mbaby'), (3,'44333','Silicon','sadeoMany') create table #ItemFeatures ( ItemFeatureId int, ItemId int, FeatureId int, CustomerId uniqueidentifier, FeatureValue nvarchar(50) ) insert into #ItemFeatures values (1,1,1,'0ce19920-f0ca-433c-abb1-4e84d52b618b','1234'), (2,1,2,'0ce19920-f0ca-433c-abb1-4e84d52b618b','4333'), (3,1,3,'0ce19920-f0ca-433c-abb1-4e84d52b618b','55555'), (4,1,3,'0ce19920-f0ca-433c-abb1-4e84d52b618b','66666'), (5,2,3,'0ce19920-f0ca-433c-abb1-4e84d52b618b','7777'), (6,3,1,'0ce19920-f0ca-433c-abb1-4e84d52b618b','88888'), (7,3,2,'0ce19920-f0ca-433c-abb1-4e84d52b618b','99999') DECLARE @Columns as VARCHAR(MAX) SELECT @Columns = COALESCE(@Columns + ', ','') + QUOTENAME(FeatureName) FROM --distinct FT.FeatureName (select distinct FT.FeatureName from #InputData Feat inner join #ItemFeatures ItemF on ItemF.CustomerId=Feat.CustomerId INNER join #FeatureType FT on ItemF.FeatureId=FT.FeatureId ) AS B ORDER BY B.FeatureName DECLARE @SQLs as VARCHAR(MAX) SET @SQLs = 'SELECT ItemCode, IPN,PartnerName,CustomerName,FeatureValue ' + @Columns + ' FROM ( select F.ItemId,F.ItemId as ItemCode,I.IPN,I.PartnerName,I.PartnerPart,c.CustomerName,t.FeatureName,F.FeatureValue from #InputData Itm inner join #ItemFeatures F on F.CustomerId=Itm.CustomerId inner join #Items I on I.ItemID=F.ItemId inner join #FeatureType T on T.FeatureId=F.FeatureId inner join #customers c on c.CustomerID=F.CustomerID ) as PivotData PIVOT ( COUNT(ItemId) FOR FeatureName IN (' + @Columns + ') ) AS PivotResult ORDER BY CustomerName' EXEC(@SQLs)