选择语句包括拼写错误或缺失的保留字或参数名称,或标点符号不正确

时间:2016-01-14 16:17:45

标签: sql excel vba ms-access-2013

我在Access 2013中编写了一个SQL代码,它可以顺畅而快速地运行(使用此代码将查询时间减少了20秒)。当我把它带到excel vba拉到电子表格时,我得到了这篇文章标题中的错误。

我做了两次编辑。首先是括号括起来的where子句中的任何文本,我加倍括号。 (来自" Tempur-Pedic"到"" Tempur-Pedic")

其次,我添加了Sql ="到第一行和sql = sql& "所有后续行。

我希望它很简单!任何帮助表示赞赏。

代码如下:

Sql = "TRANSFORM Sum(Fin2.Vel) AS Velocity"
Sql = Sql & " SELECT Fin2.IC, Fin2.IB, Fin2.COL, Fin2.[IS]"
Sql = Sql & " FROM (Select Fin.Ic, Fin.IB, Fin.Col,Fin.IS, Fin.Yr & ""_"" & Fin.Wk as Yr_Week, (Fin.tdu/fin.fsu) as Vel"
Sql = Sql & " From (SELECT FS2.[Item Company] as IC, FS2.[Item Brand] as IB, FS2.[Item Collection] as Col, FS2.[Item SubType] as IS, FS2.WeekNumber as Wk, FS2.Year as Yr, FS2.FSu, TD2.Tdu FROM (SELECT FS1.[Item Company], FS1.[Item Brand], FS1.[Item Collection], FS1.[Item SubType], FS1.WeekNumber, FS1.Year, Sum(FS1.SumOfQTY) AS FSu FROM"
Sql = Sql & " (SELECT VSNConversionData.Item_Category AS IC, [Sleepys Store List].DC, VSNConversionData.[Item Company], VSNConversionData.[Item Brand], VSNConversionData.[Item Collection], VSNConversionData.[Item SubType], FloorModels2.WeekNumber, FloorModels2.Year, Sum(FloorModels2.QTY) AS SumOfQTY"
Sql = Sql & " FROM [Sleepys Store List] INNER JOIN (VSNConversionData INNER JOIN FloorModels2 ON VSNConversionData.VSN = FloorModels2.VSN) ON [Sleepys Store List].[Store Code] = FloorModels2.[Source Org]"
Sql = Sql & " Where (((FloorModels2.WeekNumber) Between 42 and 53) and  ((FloorModels2.Year) = 2015))"
Sql = Sql & " GROUP BY VSNConversionData.Item_Category, [Sleepys Store List].DC, VSNConversionData.[Item Company], VSNConversionData.[Item Brand], VSNConversionData.[Item Collection], VSNConversionData.[Item SubType], FloorModels2.WeekNumber, FloorModels2.Year)  AS FS1"
Sql = Sql & " WHERE ((((FS1.IC) = ""Mattress"") And ((FS1.[Item Company]) = ""Tempur-Pedic"")) Or (((FS1.IC) = ""Mattress"") And ((FS1.[Item Company]) = ""Sealy"") And ((FS1.DC) <> ""950"")))"
Sql = Sql & " GROUP BY FS1.[Item Company], FS1.[Item Brand], FS1.[Item Collection], FS1.[Item SubType], FS1.WeekNumber, FS1.Year)  AS FS2"
Sql = Sql & " Left Join"
Sql = Sql & " (SELECT TD1.[Item Company], TD1.[Item Brand], TD1.[Item Collection], TD1.[Item SubType], TD1.WeekNum, TD1.Year, Sum(TD1.SumOfQTY) AS TDu"
Sql = Sql & " FROM (SELECT VSNConversionData.Item_Category AS IC, [Sleepys Store List].DC, VSNConversionData.[Item Company], VSNConversionData.[Item Brand], VSNConversionData.[Item Collection], VSNConversionData.[Item SubType], StoreSalesData.WeekNum, StoreSalesData.Year, Sum(StoreSalesData.QTY) AS SumOfQTY"
Sql = Sql & " FROM [Sleepys Store List] INNER JOIN (VSNConversionData INNER JOIN StoreSalesData ON VSNConversionData.VSN = StoreSalesData.VSN) ON [Sleepys Store List].[Store Code] = StoreSalesData.STR"
Sql = Sql & " WHERE (((StoreSalesData.WeekNum)Between 42 and 53) AND ((StoreSalesData.Year)=2015))"
Sql = Sql & " GROUP BY VSNConversionData.Item_Category, [Sleepys Store List].DC, VSNConversionData.[Item Company], VSNConversionData.[Item Brand], VSNConversionData.[Item Collection], VSNConversionData.[Item SubType], StoreSalesData.WeekNum, StoreSalesData.Year)  AS TD1"
Sql = Sql & " WHERE (((TD1.IC) = ""Mattress"") And ((TD1.[Item Company]) = ""Tempur-pedic"")) Or (((TD1.IC) = ""Mattress"") And ((TD1.[Item Company]) = ""Sealy"") And ((TD1.DC) <> ""950""))"
Sql = Sql & " GROUP BY TD1.[Item Company], TD1.[Item Brand], TD1.[Item Collection], TD1.[Item SubType], TD1.WeekNum, TD1.Year)  AS TD2"
Sql = Sql & " On ((FS2.[Item Subtype]=TD2.[Item Subtype]) AND (FS2.[Weeknumber]=TD2.Weeknum) and (FS2.year = TD2.year))) as Fin"
Sql = Sql & " Union"
Sql = Sql & " Select Fin.Ic, Fin.IB, Fin.Col,Fin.IS, Fin.Yr & ""_"" & Fin.Wk as Yr_Week, (Fin.tdu/fin.fsu) as Vel"
Sql = Sql & " FROM"
Sql = Sql & " (SELECT FS2.[Item Company] as IC, FS2.[Item Brand] as IB, FS2.[Item Collection] as Col, FS2.[Item SubType] as IS, FS2.WeekNumber as Wk, FS2.Year as Yr, FS2.FSu, TD2.Tdu"
Sql = Sql & " FROM"
Sql = Sql & " (SELECT FS1.[Item Company], FS1.[Item Brand], FS1.[Item Collection], FS1.[Item SubType], FS1.WeekNumber, FS1.Year, Sum(FS1.SumOfQTY) AS FSu"
Sql = Sql & " FROM"
Sql = Sql & " (SELECT VSNConversionData.Item_Category AS IC, [Sleepys Store List].DC, VSNConversionData.[Item Company], VSNConversionData.[Item Brand], VSNConversionData.[Item Collection], VSNConversionData.[Item SubType], FloorModels2.WeekNumber, FloorModels2.Year, Sum(FloorModels2.QTY) AS SumOfQTY"
Sql = Sql & " FROM [Sleepys Store List] INNER JOIN (VSNConversionData INNER JOIN FloorModels2 ON VSNConversionData.VSN = FloorModels2.VSN) ON [Sleepys Store List].[Store Code] = FloorModels2.[Source Org]"
Sql = Sql & " Where (((FloorModels2.WeekNumber) Between 1 and 1) and  ((FloorModels2.Year) = 2016))"
Sql = Sql & " GROUP BY VSNConversionData.Item_Category, [Sleepys Store List].DC, VSNConversionData.[Item Company], VSNConversionData.[Item Brand], VSNConversionData.[Item Collection], VSNConversionData.[Item SubType], FloorModels2.WeekNumber, FloorModels2.Year)  AS FS1"
Sql = Sql & " WHERE ((((FS1.IC) = ""Mattress"") And ((FS1.[Item Company]) = ""Tempur-Pedic"")) Or (((FS1.IC) = ""Mattress"") And ((FS1.[Item Company]) = ""Sealy"") And ((FS1.DC) <> ""950"")))"
Sql = Sql & " GROUP BY FS1.[Item Company], FS1.[Item Brand], FS1.[Item Collection], FS1.[Item SubType], FS1.WeekNumber, FS1.Year)  AS FS2"
Sql = Sql & " Left Join"
Sql = Sql & " (SELECT TD1.[Item Company], TD1.[Item Brand], TD1.[Item Collection], TD1.[Item SubType], TD1.WeekNum, TD1.Year, Sum(TD1.SumOfQTY) AS TDu"
Sql = Sql & " FROM (SELECT VSNConversionData.Item_Category AS IC, [Sleepys Store List].DC, VSNConversionData.[Item Company], VSNConversionData.[Item Brand], VSNConversionData.[Item Collection], VSNConversionData.[Item SubType], StoreSalesData.WeekNum, StoreSalesData.Year, Sum(StoreSalesData.QTY) AS SumOfQTY"
Sql = Sql & " FROM [Sleepys Store List] INNER JOIN (VSNConversionData INNER JOIN StoreSalesData ON VSNConversionData.VSN = StoreSalesData.VSN) ON [Sleepys Store List].[Store Code] = StoreSalesData.STR"
Sql = Sql & " WHERE (((StoreSalesData.WeekNum)Between 1 and 1) AND ((StoreSalesData.Year)=2016))"
Sql = Sql & " GROUP BY VSNConversionData.Item_Category, [Sleepys Store List].DC, VSNConversionData.[Item Company], VSNConversionData.[Item Brand], VSNConversionData.[Item Collection], VSNConversionData.[Item SubType], StoreSalesData.WeekNum, StoreSalesData.Year)  AS TD1"
Sql = Sql & " WHERE (((TD1.IC) = ""Mattress"") And ((TD1.[Item Company]) = ""Tempur-pedic"")) Or (((TD1.IC) = ""Mattress"") And ((TD1.[Item Company]) = ""Sealy"") And ((TD1.DC) <> ""950""))"
Sql = Sql & " GROUP BY TD1.[Item Company], TD1.[Item Brand], TD1.[Item Collection], TD1.[Item SubType], TD1.WeekNum, TD1.Year)  AS TD2"
Sql = Sql & " On ((FS2.[Item Subtype]=TD2.[Item Subtype]) AND (FS2.[Weeknumber]=TD2.Weeknum) and (FS2.year = TD2.year))) as Fin)  AS Fin2"
Sql = Sql & " GROUP BY Fin2.IC, Fin2.IB, Fin2.COL, Fin2.[IS]"
Sql = Sql & " PIVOT Fin2.Yr_Week;"

1 个答案:

答案 0 :(得分:1)

我会检查你的代码并确保每个字段都被括号括起来......例如:

TD1.Year成为TD1。[年]

这个错误通常是通过这样做来解决的。