使用Excel值修改SQL查询
我正在使用Excel 2013从SQL Server 2012数据库获取数据,我使用SQL Query成功获取数据,但是现在我希望基于Month和Year的查询是dynamic的。 如何使用单元格值(电子表格单元格)作为此类查询的参数? 我使用这个查询:
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来填充Excel工作表和SQL查询输出。 SQL查询需要如何做到这一点?
在前进中,非常感谢!
…我把你的查询保存为一个string在你的Excel VBAmacros(我假设这是查询运行的地方),简单地写它如下:
WHERE DATEPART(YEAR, fakdat) = <<YEAR>> AND DATEPART(QUARTER, fakdat) = <<MONTH>>
基本上有<<YEAR>>
和<<MONTH>>
作为占位符,那么你可以使用看起来像这样的Replace
function:
Replace strSQL, "<<YEAR>>", Range("A1").Text
其中strSQL
将是SQLstring