Tsql 构造SQLWHERE子句以在Power查询中提取数据
基本上,我希望使用powerquery检索满足子句条件的数据行 我的电子表格中有400行查找值。 每行代表1个查找代码,例如,代码AAA1、AAB2等 假设我有一个select语句,我想用上面的代码构造where子句,这样我的end sql语句看起来就像Tsql 构造SQLWHERE子句以在Power查询中提取数据,tsql,powerquery,Tsql,Powerquery,基本上,我希望使用powerquery检索满足子句条件的数据行 我的电子表格中有400行查找值。 每行代表1个查找代码,例如,代码AAA1、AAB2等 假设我有一个select语句,我想用上面的代码构造where子句,这样我的end sql语句看起来就像 select * from MyTable where Conditions in ('AA1', 'AAB2') 到目前为止,我有这个 let Source = Excel.CurrentWorkbook(){[Name="Table5"]
select * from MyTable where Conditions in ('AA1', 'AAB2')
到目前为止,我有这个
let
Source = Excel.CurrentWorkbook(){[Name="Table5"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Form ID",
Int64.Type}}),
test = Sql.Database("myserver", "myDB", [Query="SELECT * FROM myTable where" & #"Changed Type" & "])"
在
试验
显然,这不起作用,但无论如何,这是我的假想
你能告诉我怎么办吗?
非常感谢。
Peddie我会根据Excel表格创建一个“查找”电源查询。我会将“加载到”属性设置为“仅创建连接”
然后,通过使用导航器选择“MyTable”连接到SQL server来启动主查询。然后,我将向主查询添加一个合并步骤,以加入“查找”查询,将“条件”列与“查找”代码相匹配。我会将连接类型设置为“内部”。“合并属性”窗口将直观地显示您选择的两列是否包含匹配的数据
这种方法不需要任何编码,更易于构建、扩展和维护 我将基于Excel表格创建一个“查找”电源查询。我会将“加载到”属性设置为“仅创建连接”
然后,通过使用导航器选择“MyTable”连接到SQL server来启动主查询。然后,我将向主查询添加一个合并步骤,以加入“查找”查询,将“条件”列与“查找”代码相匹配。我会将连接类型设置为“内部”。“合并属性”窗口将直观地显示您选择的两列是否包含匹配的数据
这种方法不需要任何编码,更易于构建、扩展和维护 Mike Honey的join最适合您的问题,但是如果您发现自己在where子句中需要其他逻辑,这里有一个更通用的解决方案
通常,Power query只在等式表达式上生成行筛选器,但您可以将任何需要的代码放入
表中。选择行筛选器,如每个列表。包含({“AA1”,“AAB2”},[条件])
因此,对于您的表,您的查询如下所示:
let
Source = Excel.CurrentWorkbook(){[Name="Table5"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Form ID", Int64.Type}}),
test = Sql.Database("myserver", "myDB"),
yourTable = test{[Name="myTable"]}[Data],
filtered = Table.SelectRows(yourTable, each List.Contains(#"Changed Type"[Form ID], [Conditions]))
in
filtered
使用库函数的主要缺点是Table。SelectRows
只知道如何为特定的表达式模式生成SQL where子句,因此行筛选器可能在下载整个表后在您的计算机上运行,而不是让SQL Server运行筛选器。Mike Honey的join最适合您的问题,但是,如果您发现自己在where子句中需要其他逻辑,那么这里有一个更通用的解决方案
通常,Power query只在等式表达式上生成行筛选器,但您可以将任何需要的代码放入表中。选择行筛选器,如每个列表。包含({“AA1”,“AAB2”},[条件])
因此,对于您的表,您的查询如下所示:
let
Source = Excel.CurrentWorkbook(){[Name="Table5"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Form ID", Int64.Type}}),
test = Sql.Database("myserver", "myDB"),
yourTable = test{[Name="myTable"]}[Data],
filtered = Table.SelectRows(yourTable, each List.Contains(#"Changed Type"[Form ID], [Conditions]))
in
filtered
使用库函数的主要缺点是Table。SelectRows
只知道如何为特定的表达式模式生成SQL where子句,因此行筛选器可能在下载整个表后在您的计算机上运行,而不是让SQL Server运行筛选器。发生了什么?它是否运行但没有数据?出错?事实上不是“where”而是“in”,但即使这样,它也会抛出一个错误。发生了什么?它是否运行但没有数据?出错?事实上,它不是“where”,而是“in”,但即使如此,它也会抛出一个错误。