declare @sql6 nvarchar(max) = ''
set @sql6 = @sql6 + ' CODE'
EXEC sp_executesql @SQL6
このように動的SQLを宣言すると切り捨てられることはありますか?動的SQLがnvarchar(max)になっているにもかかわらず切断されています
それがよりたくさんあるべきGROUP BY
T1.TreatmentID, T1.SamplingRandomNumber,
T1.ProductID, T1.OptimizationGroupID,
T1.CurrencyCode, C.CalculatedFromText,
T1.TreatmentOrdinal, T1.SourceCode,
T1.[IsPriorBoo
:
それは、コードの束で、テキストの壁をペーストしたいのですが、print文が終わるといけません。
エラーが
付近に正しくない構文です ''。
(広いダイナミッククエリ内の)クエリの特定部分の完全なコードは
SELECT
T1.TreatmentID,
T1.SamplingRandomNumber,
T1.ProductID,
T1.OptimizationGroupID,
T1.CurrencyCode,
C.CalculatedFromText,
CONVERT(FLOAT,COUNT(1)) CountCalculatedFromText,
T1.TreatmentOrdinal,
Sum(T1.Revenue) AS Revenue,
T1.SourceCode
'+replace(@ColumnsPB,'t.','T1.') +'
INTO
#RevenueDetailCount
FROM
#RevenueDetailCountTmp T1
INNER JOIN
#CalculatedFromText C ON T1.ProductID = C.ProductID
AND T1.OptimizationGroupID = C.OptimizationGroupID
AND T1.TreatmentOrdinal = C.TreatmentOrdinal
AND T1.SamplingRandomNumber = C.SamplingRandomNumber
GROUP BY
T1.TreatmentID,
T1.SamplingRandomNumber,
T1.ProductID,
T1.OptimizationGroupID,
T1.CurrencyCode,
C.CalculatedFromText,
T1.TreatmentOrdinal,
T1.SourceCode
'+replace(@ColumnsPB,'t.','T1.') +'
編集: フル印刷動的SQL
DECLARE @CalculatedFromText AS TABLE
(
CalculatedFromText varchar(100),
CalculatedFrom smallint
)
INSERT INTO @CalculatedFromText
(
CalculatedFromText,
CalculatedFrom
)
VALUES
('Control' ,1),
('Treatment' ,2),
('Dynamic' ,3)
select
TP.TreatmentID,
TP.ProductID,
TP.OptimizationGroupID,
MIN(TP.CalculatedFromText) AS CalculatedFromText,
TP.TreatmentOrdinal,
TP.SamplingRandomNumber,
TP.CurrencyCode,
TP.SourceCode
, TP.[IsPriorBooking]
INTO #CalculatedFromText
FROM #CalculatedFromTextTmp TP
GROUP BY
TP.TreatmentID,
TP.ProductID,
TP.OptimizationGroupID,
TP.TreatmentOrdinal,
TP.SamplingRandomNumber,
TP.CurrencyCode ,
TP.SourceCode
, TP.[IsPriorBooking]
SELECT
SamplingRandomNumber,
TreatmentID,
CalculatedFromText,
ProductID,
OptimizationGroupID,
CONVERT(FLOAT,COUNT(1)) AS CountCalculatedFromText,
TreatmentOrdinal,
CurrencyCode,
SourceCode
, [IsPriorBooking]
INTO #CountCalculatedFromText
FROM #CalculatedFromText
GROUP BY
SamplingRandomNumber,
TreatmentID,
CalculatedFromText,
ProductID,
OptimizationGroupID,
TreatmentOrdinal,
CurrencyCode,
SourceCode
, [IsPriorBooking]
SELECT
SamplingRandomNumber,
TreatmentID,
ProductID,
OptimizationGroupID,
SUM(CountCalculatedFromText) AS AllCalculatedFromText,
CurrencyCode,
SourceCode
, [IsPriorBooking]
INTO #AllCalculatedFromText
FROM #CountCalculatedFromText AS cps2
GROUP BY
SamplingRandomNumber,
TreatmentID,
ProductID,
OptimizationGroupID,
CurrencyCode,
SourceCode
, [IsPriorBooking]
SELECT
CPS.SamplingRandomNumber,
CPS.TreatmentID,
CPS.CalculatedFromText,
CPS.TreatmentOrdinal,
CPS.ProductID,
CPS.OptimizationGroupID,
CPS.CountCalculatedFromText,
CPS.CountCalculatedFromText/T.AllCalculatedFromText AS PercentCalculatedFromText,
CPS.CurrencyCode,
CPS.SourceCode
, CPS.[IsPriorBooking]
INTO #PercentCalculatedFromText
FROM #CountCalculatedFromText AS CPS
INNER JOIN #AllCalculatedFromText T ON
T.TreatmentID=CPS.TreatmentID AND T.ProductID = CPS.ProductID
AND T.OptimizationGroupID = CPS.OptimizationGroupID
AND T.CurrencyCode = CPS.CurrencyCode
SELECT
T.SamplingRandomNumber,
T.TreatmentID,
T.ProductID,
T.OptimizationGroupID,
T.TreatmentOrdinal,
T.CurrencyCode,
CASE WHEN T.CalculatedFromText = 2 THEN PS.CalculatedFromText + ' + CAST(T.TreatmentOrdinal AS char)
ELSE PS.CalculatedFromText END AS PricingType,
T.CalculatedFromText,
T.CountCalculatedFromText AS QuantityLooks,
T.PercentCalculatedFromText AS LooksPercentageOfTransactions,
T.SourceCode
, T.[IsPriorBooking]
INTO #CountCalculatedFromTextPivot
FROM #PercentCalculatedFromText T
INNER JOIN @CalculatedFromText AS PS ON T.CalculatedFromText = PS.CalculatedFrom
SELECT
T1.TreatmentID,
T1.ProductID,
T1.GroupCode,
T1.OptimizationGroupID,
CASE WHEN T1.CalculatedFrom = 2 THEN T1.TreatmentOrdinal ELSE 0 END AS TreatmentOrdinal,
T1.CurrencyCode,
T1.SamplingRandomNumber,
T1.Revenue Revenue,
T1.SourceCode
, T1.[IsPriorBooking]
INTO #RevenueDetailCountTmp
FROM #TreatmentDetails T1
WHERE T1.Stage=2
SELECT
T1.TreatmentID,
T1.SamplingRandomNumber,
T1.ProductID,
T1.OptimizationGroupID,
T1.CurrencyCode,
C.CalculatedFromText,
CONVERT(FLOAT,COUNT(1)) CountCalculatedFromText,
T1.TreatmentOrdinal,
Sum(T1.Revenue) AS Revenue,
T1.SourceCode
, T1.[IsPriorBooking]
INTO #RevenueDetailCount
FROM #RevenueDetailCountTmp T1
INNER JOIN #CalculatedFromText C ON T1.ProductID = C.ProductID
AND T1.OptimizationGroupID = C.OptimizationGroupID
AND T1.TreatmentOrdinal = C.TreatmentOrdinal
AND T1.SamplingRandomNumber = C.SamplingRandomNumber
GROUP BY
T1.TreatmentID,
T1.SamplingRandomNumber,
T1.ProductID,
T1.OptimizationGroupID,
T1.CurrencyCode,
C.CalculatedFromText,
T1.TreatmentOrdinal,
T1.SourceCode
, T1.[IsPriorBoo
'varchar型:
は、クエリの短いビット表示では、あなたが実際にあなたのTHENクエリの少なくともその一部を壊しているの最初の部分で、ここで余分な引用符を持っています(最大) 'は8000文字に上っています。編集:私は間違っている - それが大きくなる可能性があります。 –
@SeanCoetzee:varchar(max)は、各文字が2バイトを使用しているので、** 20億**の文字数を持ちます(そして、nvarchar(max)は半分です) –
nvarchar(max)私はそれを空の文字列に設定してからその文字列に追加する限り、どこかで読んだことがあります。 –