[已解决] 如何通过PQ把表1变成表2?

  [复制链接]
查看288494 | 回复194 | 2020-9-25 02:05:28 | 显示全部楼层 |阅读模式
10317101750301.png 10317101750306.zip (8.83 KB, 下载次数: 0)
回复

使用道具 举报

bullsand | 2020-9-25 02:11:28 | 显示全部楼层
有没有大侠给一个思路?谢谢
回复

使用道具 举报

咖啡豆 | 2020-9-25 02:17:28 | 显示全部楼层
关注,期待
回复

使用道具 举报

中国玉 | 2020-9-25 02:22:29 | 显示全部楼层
let
  源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
  转置表 = Table.Combine(List.Transform(Table.Split(Table.Transpose(源),2),each Table.PromoteHeaders(Table.Transpose(_)))),
  逆透视的其他列 = Table.UnpivotOtherColumns(转置表, {"姓名"}, "属性", "值"),
  已透视列 = Table.Pivot(逆透视的其他列, List.Distinct(逆透视的其他列[属性]), "属性", "值")
in
  已透视列
10317101750307.zip (17.88 KB, 下载次数: 0)
回复

使用道具 举报

孤独的兔子 | 2020-9-25 02:28:29 | 显示全部楼层
自问自答吧。
用了一个合并查询的笨办法。
10317101750302.png
10317101750308.zip (19.06 KB, 下载次数: 0)
回复

使用道具 举报

lynlyn | 2020-9-25 02:33:29 | 显示全部楼层
  1. let

  2.   源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],

  3.   更改的类型 = Table.TransformColumnTypes(源,{{"姓名", type text}, {"语文", Int64.Type}, {"姓名2", type text}, {"数学", Int64.Type}, {"姓名3", type text}, {"英文", Int64.Type}}),

  4.   z=Table.SelectColumns(更改的类型,{"姓名","语文"}),

  5.   a=Table.SelectColumns(更改的类型,{"姓名2","数学"}),

  6.   b=Table.SelectColumns(更改的类型,{"姓名3","英文"}),

  7.   h=Table.FromList(List.Distinct(List.Combine({更改的类型[姓名],更改的类型[姓名2],更改的类型[姓名3]})),null,{"姓名"}),

  8.   i=Table.ExpandTableColumn(Table.NestedJoin(h, {"姓名"}, z, {"姓名"}, "a", JoinKind.FullOuter), "a", {"语文"}, {"语文"}),

  9.   l=Table.ExpandTableColumn(Table.NestedJoin(i, {"姓名"}, a, {"姓名2"}, "a", JoinKind.FullOuter), "a", {"数学"}, {"数学"}),

  10.   m=Table.ExpandTableColumn(Table.NestedJoin(l, {"姓名"}, b, {"姓名3"}, "a", JoinKind.FullOuter), "a", {"英文"}, {"英文"}),

  11.   排序的行 = Table.Sort(m,{{"姓名", Order.Ascending}})



  12. in

  13.   排序的行

复制代码
10317101750303.png
回复

使用道具 举报

bainian | 2020-9-25 02:38:29 | 显示全部楼层
let
  源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
  转置表 = Table.Combine(List.Trans ...


,谢谢大神
回复

使用道具 举报

猎手 | 2020-9-25 02:42:30 | 显示全部楼层
let
  源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
  降级的标题 = Table.DemoteHeaders(源),
  纵向合并 = Table.FromColumns(List.Transform({1,0},each List.Combine(List.Alternate(Table.ToColumns(降级的标题),1,1,_))),{"姓名","分数"}),
  加科目 = Table.AddColumn(纵向合并,"科目",each if [分数] is number then null else [分数]),
  填充 = Table.FillDown(加科目,{"科目"}),
  筛选 = Table.SelectRows(填充,each [分数] is number ),
  透视 = Table.Pivot(筛选,{"语文","数学","英文"},"科目","分数")
in
  透视
回复

使用道具 举报

wwwuu3 | 2020-9-25 02:45:30 | 显示全部楼层
10317101750304.png
回复

使用道具 举报

美女的猪仔 | 2020-9-25 02:53:30 | 显示全部楼层
好像还行,不算复杂 10317101750305.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则