代码之家  ›  专栏  ›  技术社区  ›  user3496218

使用Excel中的Microsoft Query向SQL查询添加日期参数

  •  0
  • user3496218  · 技术社区  · 6 年前

    我经常使用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 回复  |  直到 6 年前
        1
  •  0
  •   Hila DG    6 年前

    简言之,我当时也研究过它,尽我所能地传递参数(比如“Sheet1”!a1’cell),但不能。除非使用power查询和SQL存储过程,否则没有真正的方法可以做到这一点。 您认为您可以要求您的DBA(或负责数据库的人)为您创建一个存储过程,在该过程中您将传递日期参数吗?这基本上是创建参数化查询的唯一方法。

        2
  •  0
  •   user3496218    6 年前

    我让它工作了…有点工作。我让DBA在服务器上创建一个视图,并从该视图中选择了所有视图。然后我使用MS查询引入数据,并将日期替换为?。在Excel的数据源中,可以将这些问号分配给输入日期的单元格。很有魅力。不接受学分-所有学分都归:

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