【发布时间】:2016-11-23 15:44:10
【问题描述】:
我有一个在 Power Query 下运行的 MS SQL 以将一些数据导入 Excel。
我们有几个项目和代码来自另一个查询,如下所示:
let
Source = Projects[Code]
in
Source
样本数据:
+------+
| code |
+------+
| 2 |
| 3 |
| 6 |
| 76 |
| 77 |
| 78 |
| 79 |
| 80 |
| 81 |
| 82 |
| 83 |
| 84 |
| 85 |
| 86 |
| 87 |
| 88 |
| 89 |
| 90 |
| 91 |
| 92 |
| 93 |
| 94 |
| 95 |
| 96 |
| 97 |
| 99 |
| 100 |
| 101 |
| 102 |
| 103 |
+------+
我想要做的是,为每个项目代码运行以下主查询。
let
Source = Sql.Database("server", "logo", [Query="select '92' as [santiye] , stockref, DATE_ , AMOUNT, PRICE, total from LG_092_01_STLINE where cancelled = 0 and TRCODE =1"]),
#"Merged Queries" = Table.NestedJoin(Source,{"stockref"},Query2,{"stockref"},"NewColumn",JoinKind.LeftOuter),
#"Expanded NewColumn" = Table.ExpandTableColumn(#"Merged Queries", "NewColumn", {"CODE", "NAME"}, {"NewColumn.CODE", "NewColumn.NAME"}),
#"Removed Columns" = Table.RemoveColumns(#"Expanded NewColumn",{"stockref"}),
#"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"NewColumn.CODE", "NewColumn.NAME", "DATE_", "AMOUNT", "PRICE", "total"}),
#"Changed Type" = Table.TransformColumnTypes(#"Reordered Columns",{{"santiye", Int64.Type}}),
#"Merged Queries1" = Table.NestedJoin(#"Changed Type",{"santiye"},Projects,{"Code"},"NewColumn",JoinKind.LeftOuter),
#"Expanded NewColumn1" = Table.ExpandTableColumn(#"Merged Queries1", "NewColumn", {"Project Name"}, {"NewColumn.Project Name"}),
#"Renamed Columns" = Table.RenameColumns(#"Expanded NewColumn1",{{"NewColumn.Project Name", "Project Name"}}),
#"Reordered Columns1" = Table.ReorderColumns(#"Renamed Columns",{"santiye", "Project Name", "NewColumn.CODE", "NewColumn.NAME", "DATE_", "AMOUNT", "PRICE", "total"})
in
#"Reordered Columns1"
SQL 中的表名应动态更改,并作为循环从其他查询中获取,并一次合并所有数据。
LG_092_01_STLINE = LG_{code}_01_STLINE
[Query="select '92' as = [Query="select {code} as
我在 SQL 查询中做了类似的循环,但“exec()”在电源查询中不起作用。
while @cnt <= @maxrow
begin
select @firma = nr from (SELECT ROW_NUMBER() over (order by logicalref asc) as NUM, NR FROM L_CAPIFIRM ) nn where NUM = @cnt
select @santiye = name from L_CAPIFIRM where NR = @firma
set @firma = RIGHT('000'+CAST(@firma AS VARCHAR(3)),3)
set @items = 'LG_' + convert(nvarchar(3),@firma) + '_ITEMS'
set @stline = 'LG_' + convert(nvarchar(3),@firma) + '_01_STLINE'
【问题讨论】:
标签: sql sql-server-2008 dynamic foreach powerquery