私はXrefというテーブルを持っています。 コラムで構成ShaftecNo, CompNo, CompName
SQLピボットクエリエラー:動的な会社名。エラー - 非公開の引用符
私は[ShaftecNo],[CompNo]
、その後、列など[CompName]
)が表示され、ピボットクエリを記述しようとしています。次の形式で結果として私のストアドプロシージャで使用
コードは次のようです。
declare @sql nvarchar(max);
-- generate the column names
select @sql = coalesce(@sql + ',', '') + QuoteName([CompName])
from (select DISTINCT CompName from [Xrefs] WHERE CompName LIKE '[a-z]%') T;
-- replace the column names into the generic PIVOT form
set @sql = REPLACE('
select ShaftecNo, :columns:
from (SELECT ShaftecNo,CompNo,CompName FROM Xrefs INNER JOIN Product ON Xrefs.ShaftecNo COLLATE Latin1_General_CI_AS = Product.KeyCode) p
pivot (max(CompNo) for CompName in (:columns:)) as pv',
':columns:', @sql)
-- execute for the results
exec (@sql)
私は[-R]そのエラーのような広い範囲を行う場合、私は[-C]( - Cの範囲で始まるのみ[COMPNAME]年代)に変更した場合に使用LIKEコマンドは動作しますのでご注意ください。
Msg 105, Level 15, State 1, Line 4 Unclosed quotation mark after the character string 'ALFAROME'. Msg 102, Level 15, State 1, Line 4 Incorrect syntax near 'ALFAROME'.
さまざまな範囲でエラーが変化します。私が好きなものを完全に取り除いても、クエリは機能しますが、会社名(つまり、ブレークエンジニアリング)が欠けてしまいます。
、誰もがあなたのCompName
フィールドは、あなたの@sql
値を構築するときにそれらを交換/削除する必要がありますので、単一引用符が含まれている値を持っているようですね
@sql値を印刷できますか、その行にエラーがありますか?最初に 'exec(@sql)'の前に 'PRINT @ SQL'を入れてください。この特定のメンテナンスの問題は常にあなたを悩ますことに注意してください。動的SQLは痛みです。通常、「レポートレイヤー」にクロスタブを実装します –
テーブルのデータを確認します。彼らは引用を含んでいますか?私はそう思う。 –
まだ問題があります。 print @sqlを使用すると、procduredのSQLコードが正しくないことがわかります。それは何らかの未知の理由のために終わりを告げる。たとえば、 – Jason