2013-02-21 2 views
1

Я использую Excel 2013 для получения данных из базы данных SQL Server 2012, Я успешно получаю данные с помощью SQL Query, но теперь я хочу, чтобы этот запрос был динамическим, основываясь на Месяце и Год. Как можно использовать значение ячейки (ячейку электронной таблицы) в качестве параметра для такого запроса? Я использую этот запрос:Adapt SQL Query with Excel valua

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 года, а затем оператор DATEPART в SQL должен быть основан на том. Я использую надстройку Excel 2013 AddPay PowerPivot для заполнения листа Excel с помощью вывода SQL Query. Как SQL-запрос должен быть для этого?

Вперед, большое спасибо!

ответ

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. Я вставил Query в таблицу PowerPivot (надстройка Excel 2013), поэтому мне действительно нужно настроить SQL-запрос, чтобы он работал – BassieBas1987