如何在 Google 工作表中使用 Query() 函数添加每个数据行的行索引?
How to Add Row Index of each data row using Query() function in Google Sheets?
有没有办法像在查询中使用 row() 函数一样使用查询函数获取行索引?
这是我的查询 SQL。 查询来源来自2个不同的工作表。因此,当下一个源被选择到查询中时,行索引应该重新设置为 1。
={
query(IMPORTRANGE('Static Data'!$B,'Static Data'!$B),
"select Col" & ArrayFormula(textjoin(", Col",true,column('Static Data'!$A:$AC))) & ", 'BAU'
where
Col"& 'Static Data'!$B &" is not null
label 'BAU' 'SOURCE'",
1);
query(IMPORTRANGE('Static Data'!$B,'Static Data'!$B),
"select Col" & ArrayFormula(textjoin(", Col",true,column('Static Data'!$A:$AC))) & ", 'ICS'
where
Col"& 'Static Data'!$B &" is not null
label 'ICS' ''",
0)`}
编辑 (24/Aug/2021):
根据下面评论的建议,最终的代码看起来像这样。我将 rowId 移到了 table 的末尾,因为那是我希望它放置的位置。
=INDEX({QUERY({IMPORTRANGE('Static Data'!$B, 'Static Data'!$B),SEQUENCE(ROWS(
IMPORTRANGE('Static Data'!$B, 'Static Data'!$B)))},
"select Col1,Col"&TEXTJOIN(",Col", 1, 1+COLUMN('Static Data'!$A:$AC))&",'BAU'
where Col"&1+'Static Data'!$B&" is not null
label 'BAU''SOURCE'", 1);
QUERY({IMPORTRANGE('Static Data'!$B, 'Static Data'!$B),SEQUENCE(ROWS(
IMPORTRANGE('Static Data'!$B, 'Static Data'!$B)))+1},
"select Col1,Col"&TEXTJOIN(",Col", 1, 1+COLUMN('Static Data'!$A:$AC))&",'ICS'
where Col"&1+'Static Data'!$B&" is not null
label 'ICS'''", )})
={query({sequence(ROWS(IMPORTRANGE('Static Data'!$B,'Static Data'!$B))),IMPORTRANGE('Static Data'!$B,'Static Data'!$B)},
"select Col1, Col" & ArrayFormula(textjoin(", Col",true,1+column('Static Data'!$A:$AC))) & ", 'BAU'
where
Col"& (1+'Static Data'!$B) &" is not null
label 'BAU' 'SOURCE'",
1);
query({sequence(rows(IMPORTRANGE('Static Data'!$B,'Static Data'!$B))),IMPORTRANGE('Static Data'!$B,'Static Data'!$B)},
"select Col1, Col" & ArrayFormula(textjoin(", Col",true,1+column('Static Data'!$A:$AC))) & ", 'ICS'
where
Col"& (1+'Static Data'!$B) &" is not null
label 'ICS' ''",
0)}
尝试更紧凑:
=INDEX({QUERY({SEQUENCE(ROWS(
IMPORTRANGE('Static Data'!B2, 'Static Data'!B3))),
IMPORTRANGE('Static Data'!B2, 'Static Data'!B3)},
"select Col1,Col"&TEXTJOIN(",Col", 1, 1+COLUMN('Static Data'!A22:AC22))&",'BAU'
where Col"&1+'Static Data'!B22&" is not null
label 'BAU''SOURCE'", 1);
QUERY({SEQUENCE(ROWS(
IMPORTRANGE('Static Data'!B2, 'Static Data'!B5))),
IMPORTRANGE('Static Data'!B2, 'Static Data'!B5)},
"select Col1,Col"&TEXTJOIN(",Col", 1, 1+COLUMN('Static Data'!A22:AC22))&",'ICS'
where Col"&1+'Static Data'!B22&" is not null
label 'ICS'''", )})
有没有办法像在查询中使用 row() 函数一样使用查询函数获取行索引?
这是我的查询 SQL。 查询来源来自2个不同的工作表。因此,当下一个源被选择到查询中时,行索引应该重新设置为 1。
={
query(IMPORTRANGE('Static Data'!$B,'Static Data'!$B),
"select Col" & ArrayFormula(textjoin(", Col",true,column('Static Data'!$A:$AC))) & ", 'BAU'
where
Col"& 'Static Data'!$B &" is not null
label 'BAU' 'SOURCE'",
1);
query(IMPORTRANGE('Static Data'!$B,'Static Data'!$B),
"select Col" & ArrayFormula(textjoin(", Col",true,column('Static Data'!$A:$AC))) & ", 'ICS'
where
Col"& 'Static Data'!$B &" is not null
label 'ICS' ''",
0)`}
编辑 (24/Aug/2021):
根据下面评论的建议,最终的代码看起来像这样。我将 rowId 移到了 table 的末尾,因为那是我希望它放置的位置。
=INDEX({QUERY({IMPORTRANGE('Static Data'!$B, 'Static Data'!$B),SEQUENCE(ROWS(
IMPORTRANGE('Static Data'!$B, 'Static Data'!$B)))},
"select Col1,Col"&TEXTJOIN(",Col", 1, 1+COLUMN('Static Data'!$A:$AC))&",'BAU'
where Col"&1+'Static Data'!$B&" is not null
label 'BAU''SOURCE'", 1);
QUERY({IMPORTRANGE('Static Data'!$B, 'Static Data'!$B),SEQUENCE(ROWS(
IMPORTRANGE('Static Data'!$B, 'Static Data'!$B)))+1},
"select Col1,Col"&TEXTJOIN(",Col", 1, 1+COLUMN('Static Data'!$A:$AC))&",'ICS'
where Col"&1+'Static Data'!$B&" is not null
label 'ICS'''", )})
={query({sequence(ROWS(IMPORTRANGE('Static Data'!$B,'Static Data'!$B))),IMPORTRANGE('Static Data'!$B,'Static Data'!$B)},
"select Col1, Col" & ArrayFormula(textjoin(", Col",true,1+column('Static Data'!$A:$AC))) & ", 'BAU'
where
Col"& (1+'Static Data'!$B) &" is not null
label 'BAU' 'SOURCE'",
1);
query({sequence(rows(IMPORTRANGE('Static Data'!$B,'Static Data'!$B))),IMPORTRANGE('Static Data'!$B,'Static Data'!$B)},
"select Col1, Col" & ArrayFormula(textjoin(", Col",true,1+column('Static Data'!$A:$AC))) & ", 'ICS'
where
Col"& (1+'Static Data'!$B) &" is not null
label 'ICS' ''",
0)}
尝试更紧凑:
=INDEX({QUERY({SEQUENCE(ROWS(
IMPORTRANGE('Static Data'!B2, 'Static Data'!B3))),
IMPORTRANGE('Static Data'!B2, 'Static Data'!B3)},
"select Col1,Col"&TEXTJOIN(",Col", 1, 1+COLUMN('Static Data'!A22:AC22))&",'BAU'
where Col"&1+'Static Data'!B22&" is not null
label 'BAU''SOURCE'", 1);
QUERY({SEQUENCE(ROWS(
IMPORTRANGE('Static Data'!B2, 'Static Data'!B5))),
IMPORTRANGE('Static Data'!B2, 'Static Data'!B5)},
"select Col1,Col"&TEXTJOIN(",Col", 1, 1+COLUMN('Static Data'!A22:AC22))&",'ICS'
where Col"&1+'Static Data'!B22&" is not null
label 'ICS'''", )})