【问题标题】:Adapt SQL Query with an Excel valua使用 Excel 值调整 SQL 查询
【发布时间】:2013-02-06 21:02:38
【问题描述】:

我正在使用 Excel 2013 从 SQL Server 2012 数据库中获取数据, 我使用 SQL 查询成功获取数据,但现在我希望该查询是动态的,基于月份和年份。 如何使用单元格值(电子表格单元格)作为此类查询的参数? 我使用这个查询:

    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 使用 SQL 查询输出填充 Excel 工作表。 SQL 查询需要如何做到这一点?

转发,非常感谢!

【问题讨论】:

    标签: excel sql-server-2012


    【解决方案1】:
    【解决方案2】:

    ...我将查询保存为 Excel VBA 宏中的字符串(我假设这是运行此查询的位置),只需将其编写如下:

    WHERE DATEPART(YEAR, fakdat) =  <<YEAR>>
    AND DATEPART(QUARTER, fakdat) = <<MONTH>>
    

    基本上有&lt;&lt;YEAR&gt;&gt;&lt;&lt;MONTH&gt;&gt; 作为占位符,然后你可以使用看起来像这样的Replace 函数:

    Replace strSQL, "<<YEAR>>", Range("A1").Text
    

    strSQL 是 SQL 字符串

    【讨论】:

    • 感谢您的评论,但不,我没有使用 Excel VBA Marco。我将查询插入到 PowerPivot 表(Excel 2013 加载项)中,所以我真的需要调整 SQL 查询以使其工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 2020-01-25
    • 1970-01-01
    相关资源
    最近更新 更多