2013-02-21 91 views
1

我使用Excel 2013从SQL Server 2012数据库获取数据, 我使用SQL查询成功获取数据,但现在我希望该查询是动态的,基于月和年份。 如何使用单元格值(电子表格单元格)作为此类查询的参数? 我用这个查询:使用Excel值修改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如何做到这一点?

在转发中,非常感谢!

回答

0

...我已保存在您的Excel VBA宏字符串查询(我假设这就是这个查询是从运行),只需写如下:

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

基本上有<<YEAR>><<MONTH>>为占位符,那么你可以使用Replace功能看起来像这样:

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

其中strSQL将SQL字符串

+0

感谢您的评论,但不,我没有使用Excel VBA Marco。 我将查询插入PowerPivot表(Excel 2013加载项),所以我真的需要调整SQL查询以使其工作 – BassieBas1987 2013-02-21 14:28:24