使用Excel值调整SQL查询

时间:2013-02-21 13:50:49

标签: excel sql-server-2012

我正在使用Excel 2013从SQL Server 2012数据库中获取数据, 我使用SQL查询成功获取数据,但现在我希望该查询是动态的,基于月份和年份。 如何使用单元格值(电子表格单元格)作为此类查询的参数? 我使用这个查询:

    SELECT [Class_02] AS [MS Part Number]
          ,[701].[dbo].[ItemClasses].[Description] AS [Item Name]
          ,ROUND([701].[dbo].[frhsrg].[esr_aantal]/3, 0) AS [Aantal]
          ,[701].[dbo].[ItemAccounts].[SlsPkgsPerPurPkg] AS [Prijs]
          ,SUM(DISTINCT [701].[dbo].[frhsrg].[esr_aantal]) * [701].[dbo].[ItemAccounts].[SlsPkgsPerPurPkg] as Totaalprijs

FROM [701].[dbo].[Items] 

      WHERE DATEPART(YEAR, fakdat) =  '2013'
      AND DATEPART(QUARTER, fakdat) =  '1'
      AND [701].[dbo].[frhsrg].[docnumber] LIKE '%kwartaal%'

我在 Excel (月和年)中有两个值,如2013年3月,然后SQL中的DATEPART语句必须基于此。我使用Excel 2013加载项PowerPivot使用SQL查询输出填充Excel工作表。 SQL Query如何执行此操作?

前进,非常感谢!

2 个答案:

答案 0 :(得分:0)

...我将您的查询保存为Excel VBA宏中的字符串(我假设这是运行此查询的位置),只需按如下方式编写:

WHERE DATEPART(YEAR, fakdat) =  <<YEAR>>
AND DATEPART(QUARTER, fakdat) = <<MONTH>>

基本上将<<YEAR>><<MONTH>>作为占位符,然后您可以使用Replace函数看起来像这样:

Replace strSQL, "<<YEAR>>", Range("A1").Text

其中strSQL将是SQL字符串

答案 1 :(得分:0)