Sql server 2012 多参数MS查询

Sql server 2012 多参数MS查询,sql-server-2012,ms-query,excel-2013,Sql Server 2012,Ms Query,Excel 2013,我有这个SQL查询,我希望结果显示在Excel 2013工作表/表格中 SELECT [MS Part Number], [Item Name], SUM([Aantal]) AS Aantal, [Prijs] FROM ( SELECT [MS Part Number], [Item Name], SUM([Aantal]) AS Aantal, [Prijs] FROM vwSPLAInformatie WHERE

我有这个SQL查询,我希望结果显示在Excel 2013工作表/表格中

SELECT 
  [MS Part Number], [Item Name], SUM([Aantal]) AS Aantal, [Prijs]
FROM 
  (
    SELECT 
      [MS Part Number], [Item Name], SUM([Aantal]) AS Aantal, [Prijs]
    FROM 
      vwSPLAInformatie
    WHERE 
      (DATEPART(YEAR, fakdat) = '2013') 
      AND (DATEPART(QUARTER, fakdat) = '1')
      AND docnumber LIKE '%kwartaal%'
    GROUP BY 
      [MS Part Number], [Item Name], [Aantal], [Prijs]
    UNION ALL
    SELECT 
      [MS Part Number], [Item Name], SUM([Aantal]) AS Aantal, [Prijs]
    FROM 
      vwSPLAInformatie
    WHERE 
      (DATEPART(YEAR, fakdat) = '2013') 
      AND (DATEPART(MONTH, fakdat) = '1')
      AND NOT docnumber LIKE '%kwartaal%'
    GROUP BY 
      [MS Part Number], [Item Name], [Aantal], [Prijs]
  ) AS Basis
GROUP BY 
  [MS Part Number], [Item Name], [Prijs]
它工作得很好,唯一的一点是我有4个参数,我想连接到Excel中的3个单元格值。 年份=2013年季度=1个月=2。但当我将查询调整为以下内容时:

 WHERE (DATEPART(YEAR, fakdat) = '?')
我在Excel中选择了一个单元格,上面写着2013年,所以基本上它应该可以工作,但它不能。我得到以下错误:

[Microsoft]ODBC SQL Server][SQL Server]Conversion failed when converting the varchar value '?' to data type in.

该值相同,但根本不起作用。我怎样才能解决这个问题?我会非常高兴当这工作!接下来,非常感谢。

Jeez,你必须提高你的代码格式化技能。这正是不可读的定义此外,SQL字段名还带有空格?:-/你试过DATEPARTYEAR,fakdat=?没有报价?参数占位符不应该用引号括起来。如果我将其更改为?如果没有引号,那么我会得到错误[Microsoft]ODBC SQL Server][SQL Server]无效参数编号和[Microsoft]ODBC SQL Server][SQL Server]无效描述符索引。这表明这可能是ODBC或Excel中的一个错误-对于复杂语句,参数似乎失败。将SQL语句放入存储过程并从Excel调用可能是一种变通方法。我看了一下,这确实是Excel使用OBDC时的一个错误。但是它说我需要使用这个:2创建一个从视图中选择的查询,然后通过将命令文本更改为{CALL MyStoredProcedure?,?}在连接属性的定义选项卡中修改相同的查询,并且我可以直接在查询中更改它。但这应该是怎样的呢?