新規SQL with SQL。私は同じブックのシートに格納されているテーブルから動的ピボットクエリをテストするためにExcel VBAを介してクエリ文字列を介してSQLコードを実行しようとしています。通常のクエリは完全に(SELECT)動作していますが、SQL文は正しく動作していません。Excel VBA(クエリテーブル同じブック)のクエリ文字列を使用してSQLプロシージャコードを実行します。
私は私が達成したい何を、何度も何度も
Invalid SQL statement expected; 'DELETE','INSERT'
...エラーを受け取るには、動的なピボット(変数の列に行)を取得するためのSQLクエリです。私はピボットテーブルでこれを達成したくありません。私はVBAのSQL文字列クエリでそれをやりたいと思います。これを行うことができますどのように
?
On Error GoTo ErrorConexion
objAdoConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.path & "\" & ThisWorkbook.Name & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;FMT=Delimited; IMEX=1;"""
strSQL = "SET NOCOUNT ON " & Chr(13) _
& "CREATE TABLE #tempdata(tmpf1 date, tmpf2 int)" _
& " INSERT INTO #tempdata(tmpf1,tmpf2)" _
& " SELECT [DATE], [AMOUNT] FROM " & GetTableRange(StrTable)
On Error GoTo ErrorSQL
objAdoRS.Open strSQL, objAdoConn
私はこのようなコードを実行したいと思います:
DECLARE @Category AS VARCHAR(MAX)
SELECT @Category =
COALESCE(@Category + ', ', '') + CAST(Category AS VARCHAR(20))
FROM (SELECT DISTINCT Category FROM mytable) Books
DECLARE @DynamicPIVOT AS VARCHAR(MAX)
SELECT @DynamicPIVOT = 'SELECT ' + @Category +
' FROM (
SELECT amount, Category FROM mytable
) Books
PIVOT (
MAX(amount) FOR Category IN (' + @Category + ')
) Result;'
EXEC (@DynamicPIVOT)
よろしく、 ヴィンスを。
異なるSQLエンジンと異なる方針のSQL Serverストアドプロシージャ(複雑な動的ピボット)をJet/ACEで複製しようとしています。さらに、ストアドプロシージャのように、ADOを使用して1回の呼び出しで複数のSQLコマンドを送信することはできません。データと希望する出力を表示してください。 – Parfait
ありがとうパフェ、私は多くの環境に混じっています。サンプルデータを追加しました。 – Vince