我对 SQL 很陌生,我想使用此查询将数据从 SQL Server 导入到 Excel
SELECT
Model, Factory, TargetTime, TotalEvalMins
FROM
AMSView
WHERE
WeekNumber = 45 AND WeekYear = 2021
我想通过从单元格获取用户输入来动态更改周数和年份。
谁能建议如何更改查询?
假设用户在 A1,A2 的工作表示例中值周和年,我该如何编写该查询?
由于数据量巨大,我必须在查询数据时应用where,而不是在Excel中应用过滤器。
对不起,我的英语不好
命名将用作参数的每个单元格。这一页 https://support.microsoft.com/en-us/office/define-and-use-names-in-formulas-4d0f13ac-53b7-422e-afd2-abd7ff379c64描述了该过程。
命名一个单元格
1. Select a cell.
2. In the Name Box, type a name.
3. Press Enter.
对于包含查询参数的每个单元格:
- 选择单元格
- Use
Data>Get & Transform Data>From Table/Range
。这将打开 Power Query 编辑器。你会看到这样的东西:
- 右键单击 Power Query 编辑器中网格中第 1 行的单元格,然后选择“向下钻取”。这会将参数单元格上的查询转换为可在其他查询中使用的命名值。它看起来像这样:
现在在 Excel 中,使用Data>Get Data
并从数据库创建您的查询。我在名为 AMSView 的本地 SQL Server 数据库中创建了一个示例表,然后使用您帖子中的查询文本连接到它。完成查询连接后,选择“转换”,以便查询在 PowerQuery 编辑器中打开。
现在,使用Home>Advanced Editor
并通过替换中的固定值进行如下编辑WHERE
包含参数单元格串联名称的子句,转换为文本。为了简洁起见,我只使用了一个参数。如果您在单元格名称中使用了大写字母,请记住,M语言区分大小写 https://learn.microsoft.com/en-us/powerquery-m/quick-tour-of-the-power-query-m-formula-language,因此连接的参数名称必须与命名值具有相同的大小写。
let
Source = Sql.Database("localhost", "StackOverflowTest", [Query="SELECT #(lf) Model, Factory, TargetTime, TotalEvalMins #(lf)FROM #(lf) AMSView #(lf)WHERE #(lf) WeekNumber = " & Number.ToText(week_number)])
in
Source
查询完成后,使用Home>Close & Load
将结果加载到工作簿中。现在,当您的参数单元格发生更改时,您只需刷新查询(右键单击,刷新),数据就会根据需要进行过滤。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)