Bu tablo varPivot var olmayan biriyle
DECLARE @TreatmentTableVariables TABLE(ParameterCode VARCHAR(64), Value varchar(64))
INSERT @TreatmentTableVariables VALUES ('TripOriginLocationCode','AHO')
INSERT @TreatmentTableVariables VALUES ('TripOriginCountryCode','IT')
SELECT DISTINCT ParameterCode, Value
INTO Staging.tmpParameterCodes
FROM @TreatmentTableVariables;
SET @ParameterCodesToPivot = (SELECT '['+LEFT(ParameterCode, LEN(ParameterCode) - 2)
FROM (
SELECT ParameterCode + '],['
FROM Staging.tmpParameterCodes
where Value IS NOT NULL
FOR XML PATH ('')
) c (ParameterCode)
Ve sonra, pivot kodu
SET @sqlquery = '
SELECT *
INTO
Staging.tmpTreatmentInputParameters
FROM
(
SELECT
tip.TreatmentID,
tip.ParameterCode,
tip.ClientCode,
tip.Value
FROM AnalyticsDW.TreatmentInputParameter tip
left join Staging.tmpParameterCodes TPC
on tip.ParameterCode=TPC.ParameterCode
Where
--tip.TreatmentID between @MinTreatmentID and @MaxTreatmentID
--and
TPC.Value IS NOT NULL
and (TPC.Value=tip.Value or TPC.Value='''')
and tip.Value IS NOT NULL
)p
PIVOT
(
MIN(Value)
FOR ParameterCode IN ('+ @ParameterCodesToPivot +')
)
AS PVT'
anahtar @ParameterCodesToPivot bir değer (TripOriginLocationCode) sahiptir olduğuna AnalyticsDW.TreatmentInputParameter.ParameterCode içinde mevcut değil.
Yani benim sonuç TreatmentID, ClientCode, TripOriginCountryCode, TripOriginLocationCode (bütün boş olan) AnalyticsDW.TreatmentInputParameter.ParameterCodeyılında TripOriginLocationCode hiçbir değeri olmadığı için pivot tablo o sütun için boş döndürür.
Sadece AnalyticsDW.TreatmentInputParameter var ParameterCOde sütunlar oluşturmak Ben pivotu sınırlamak nasıl
FOR ParameterCode IN ('+ @ParameterCodesToPivot +')
kullandığım için
gerekirse bazı örnek verileri oluşturabilir, sadece merak bu özel kod .. sorgunuzun Bazı doğru görünmüyor
mevcut ParameterCodes için size sütunlarını vermelidir. Bunun gibi sınırlandırılmış bir değerler listesi geçemezsiniz. Dinamik sql kullanmanız veya ayrılmış bir liste yerine bir tablo kullanmanız gerekir. –
hangi bölümden bahsediyorsunuz? –
Bu bölüm "FOR ParameterCode IN ('+ @ParameterCodesToPivot +')". Bu sizin değerler listenize bakmıyor. Değişkenin değerine bakacaktır. –