在Excel中使用Microsoft Query将日期参数添加到SQL查询

时间:2018-10-10 02:09:57

标签: sql excel microsoft-query

我经常使用Excel中的函数(现在为旧版)从SQL Server获取数据,然后将实际的SQL语句粘贴到Excel工作表中,并且效果很好。我一直在研究如何对我的查询执行此操作,这些查询的日期参数每次运行报表时都需要更改,起初,似乎最好在Excel中使用Microsoft Query。这将使用“?”而不是日期本身,并允许添加参数。每当我尝试使用以下查询执行此操作时,都会出现错误“无法以图形方式显示的查询中不允许使用参数”。老实说,我不知道这意味着什么,但会珍惜任何投入。我的查询如下。谢谢

SELECT E.TEAM_MEMBER_NAME AS 'PURCHASER',
       M.DEPARTMENT, 
       M.BUSINESS_SEGMENT_CODE, 
       KB.BUSINESS_SEGMENT_DESC,
       KG.GENDER_DESC, 
       MR.PLANT_CODE [PLANT], 
       MR.STOCK_CATEGORY, 
       M.MATERIAL,
       M.[DESCRIPTION],
       M.COLOR_1,
       M.COLOR_2,
       MR.SIZE_LITERAL,
       MR.QUANTITY,
       M.STANDARD_COST,
       M.DEALER_PRICE,
       M.CURRENT_SEASON,
       MR.STOCK_NUMBER AS 'AFS PO #',
       H.PO_CREATED_BY,
       H.PO_TYPE,
       MR.MRP_INDICATOR,
       MR.STOCK_TYPE,
       H.PO_ISSUE_DATE

FROM   PDX_SAP_USER..VW_MRP_ALLOCATION MR 
JOIN   PDX_SAP_USER..VW_MM_MATERIAL M ON MR.MATERIAL = M.MATERIAL 
JOIN   PDX_SAP_USER..VW_KD_BUSINESS_SEGMENT KB ON M.BUSINESS_SEGMENT_CODE = KB.BUSINESS_SEGMENT_CODE
JOIN   PDX_SAP_USER..VW_KD_GENDER KG ON M.GENDER_CODE = KG.GENDER_CODE 
JOIN   PDX_SAP_USER..VW_PO_HEADER H ON MR.STOCK_NUMBER = H.PO_NUMBER 
JOIN   ADI_USER_MAINTAINED..SCM_PO_EMPLOYEE_NAME E ON MR.STOCK_NUMBER = E.PO_NUMBER 

WHERE  M.BUSINESS_SEGMENT_CODE NOT IN ('420','421','422','424')
AND    MR.STOCK_CATEGORY NOT LIKE 'A60383%'
AND    MR.STOCK_CATEGORY NOT IN ('A60382001','A60380070')
AND    M.MATERIAL NOT IN ('AY1480','CD4683')
AND    H.PO_TYPE NOT IN ('02','06','10','UB','DB')
AND    MR.MRP_INDICATOR IN ('A','N')
AND    MR.STOCK_TYPE = 'B'
AND    MR.QUANTITY >= 50
AND    H.PO_ISSUE_DATE BETWEEN '09/26/2018' AND '10/10/2018'

ORDER BY MR.QUANTITY DESC

2 个答案:

答案 0 :(得分:0)

简短的回答是,我当时也对其进行了研究,尽我最大的努力来传递参数(比如说,“ Sheet1!A1”单元格),但是不能。除非您使用Power Query以及SQL存储过程,否则没有真正的方法可以做到这一点。 您是否认为您可以要求DBA(或负责数据库的人)为您创建一个存储过程,并在其中传递日期参数?基本上,这是创建参数化查询的唯一方法。

答案 1 :(得分:0)

我知道它可以工作了。。。我让DBA在我们的服务器上创建了一个视图,并从该视图中选择了所有视图。然后,我使用MS Query引入数据,并用?替换日期。从那里,您可以在Excel的数据源中将那些问号分配给您在其中输入日期的单元格。奇迹般有效。而不是功劳-所有功劳归于:

https://www.youtube.com/watch?v=xPalEw4xw1w