【问题标题】:Using Microsoft Query in Excel to Add Date Parameters to SQL Query在 Excel 中使用 Microsoft Query 将日期参数添加到 SQL Query
【发布时间】:2018-10-10 02:09:57
【问题描述】:

我经常在 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

【问题讨论】:

    标签: sql excel microsoft-query


    【解决方案1】:

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

    【讨论】:

    • 令人失望 - 是因为加入吗?观看一些 youtube 视频看起来很简单,而且看起来很愚蠢,加入会破坏这种能力。
    • 必须有一种方法……Power Query 会不会太慢。当您说使用存储过程时,我将如何使用它来传递参数?
    • @user3496218 不,这与 JOINS 无关。如果您尝试传递参数而不是实际日期,即使 SELECT myField from myTable WHERE myDate
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多