带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)
问候, 文斯。
您试图使用Jet/ACE复制SQL Server存储过程(一个错综复杂的动态数据透视表) - 有两种不同的SQL引擎和方言。另外,您不能像在存储过程中一样使用ADO在单个调用中发送多个SQL命令。请向我们展示数据和期望的输出。 – Parfait
谢谢Parfait,我在混合很多环境。我添加了示例数据。 – Vince