【问题标题】:How to use a SQL query in Google Sheets to group by a substring如何在 Google 表格中使用 SQL 查询按子字符串分组
【发布时间】:2019-12-13 08:00:51
【问题描述】:

在我的表格中,在 Google 表格中,我有一个名为“描述”的列 B,我正在尝试编写一个 SQL 查询来按列 B 的子字符串进行分组。B 中的值类似于“Sell 1 Jan11 300.0/307.5扼杀”,我只想按“Jan11”分组。 Jan11 有几行,然后切换到 Jan18,等等。

我尝试过 substring、char index、mid,但没有任何效果 我试过了:

=QUERY('spgsh1378'!A1:AP,"select B, mid(B,7,5), sum(M) group by mid(B,7,5)"

=QUERY('spgsh1378'!A1:AP,"select B, substring(B,7,5), sum(M) group by substring(B,7,5)")

=QUERY('spgsh1378'!A1:AP,"select B, substring(B, 2, CHARINDEX(' ', B) - 2), sum(M) group by substring(B, 2, CHARINDEX(' ', B) - 2)"

我收到一个解析错误,上面写着

“无法解析函数 QUERY 参数 2 的查询字符串:PARSE_ERROR:在第 1 行第 14 列遇到“”(““(“”)。期待以下之一:“where”...“group”... “pivot” ... “order” ... “skipping” ... “limit” ... “offset” ... “label” ... “format” ... “options” ... “, " ... "" ... "+" ... "-" ... "/" ... "%" ... "" ... "/" .. . "%" ... "+" ... "-" ..."

【问题讨论】:

    标签: sql google-sheets group-by substring google-sheets-query


    【解决方案1】:

    您的尝试不是有效的语法。试试这样:

    =ARRAYFORMULA(QUERY({MID(spgsh1378!B1:B, 7, 5), spgsh1378!A1:AP}, 
     "select Col3,Col1,sum(Col14) 
      where Col1 is not null 
      group by Col1,Col3
      label sum(Col14)''", 0))
    

    =ARRAYFORMULA(QUERY({QUERY({MID('grouping project'!A1:A, 8, 5), 'grouping project'!A1:AO}, 
     "select Col1,sum(Col3) 
      where Col1 is not null 
      group by Col1
      label Col1'month',sum(Col3)'net'",1), 
     IF(LEN(QUERY(QUERY({MID('grouping project'!A1:A, 8, 5), 'grouping project'!A1:AO}, 
     "select Col1,sum(Col3) 
      where Col1 is not null 
      group by Col1
      label Col1'month',sum(Col3)'net'",1),"select Col1",0)), {"";MONTH(LEFT(
     QUERY(QUERY({MID('grouping project'!A1:A, 8, 5), 'grouping project'!A1:AO}, 
     "select Col1,sum(Col3) 
      where Col1 is not null 
      group by Col1
      label Col1'month',sum(Col3)'net'",1),"select Col1 offset 1", 0), 3)&1)&RIGHT(
     QUERY(QUERY({MID('grouping project'!A1:A, 8, 5), 'grouping project'!A1:AO}, 
     "select Col1,sum(Col3) 
      where Col1 is not null 
      group by Col1
      label Col1'month',sum(Col3)'net'",1),"select Col1 offset 1", 0), 2)}, )*1}, 
     "select Col1,Col2 order by Col3"))
    

    【讨论】:

    • 我使用了这个:= ARRAYFORMULA(QUERY({MID('spgsh1378'!B1:B, 8, 5), 'spgsh1378'!A1:AP}, "select Col1,sum(Col14)其中 Col1 不是由 Col1 标签 sum(Col14)'net'")) 组成的空组,它工作除了在标题上使用了“mid”函数,因此“description”现在是“tion”。此外,Feb01 早于 Jan11、Jan25 等。我该如何更改?
    • 当然,与您分享最简单的方法是什么?
    • 只需在此处粘贴一个链接并确保该工作表不是私有的
    猜你喜欢
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多