Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在google查询语言中使用substring和charindex_Sql_Google Sheets - Fatal编程技术网

Sql 如何在google查询语言中使用substring和charindex

Sql 如何在google查询语言中使用substring和charindex,sql,google-sheets,Sql,Google Sheets,我有一份谷歌电子表格,其中有几列: A:日期 B:字符串 C:号码 ... G:字符串(可以为空) H:字符串(可以为空) 我想要一张小桌子,上面有: 获取表中C的总和,其中行是G的值(它的子字符串,因为它们被配置为:CATEGORY:ITEM,我只需要按类别分组),列是monts 到目前为止,我只有查询的部分解决方案(例如groupbymonth(toDate(A))等)-我似乎无法使用substring和charindex,也无法执行字符串操作来删除类别后的项部分,也无法将它们可视化为结果行

我有一份谷歌电子表格,其中有几列:

A:日期 B:字符串 C:号码 ... G:字符串(可以为空) H:字符串(可以为空)

我想要一张小桌子,上面有:

获取表中C的总和,其中行是G的值(它的子字符串,因为它们被配置为:CATEGORY:ITEM,我只需要按类别分组),列是monts

到目前为止,我只有查询的部分解决方案(例如groupbymonth(toDate(A))等)-我似乎无法使用substring和charindex,也无法执行字符串操作来删除类别后的项部分,也无法将它们可视化为结果行中的第一个束

编辑:只是想澄清一点:我需要为每一行修改G中的值,这样我就可以根据修改后的值进行分组。我知道可以使用日期(在我的示例中->按月分组(toDate(A))让我可以访问列中的每个值,以便在每个单独的月份对结果进行正确分组)。但似乎字符串操纵是不允许的

对于初学者,我应该如何做到这一点


谢谢

根据您想要的输出,您能在第2页上尝试一下吗:

=ArrayFormula(query({day(Sheet1!A2:A10)&text(month(Sheet1!A2:A10), " (mmm)"), Sheet1!B2:F10, regexextract(Sheet1!G2:G10, "(.+):")}, "select Col7, sum(Col3) group by Col7 pivot Col1"))
看看这是否有进展

或者,如果您更喜欢开放式范围:

=ArrayFormula(query({day(Sheet1!A2:A)&text(month(Sheet1!A2:A), " (mmm)"), Sheet1!B2:F, iferror(regexextract(Sheet1!G2:G, "(.+):"))}, "select Col7, sum(Col3) where Col7 <>'' group by Col7 pivot Col1"))
=ArrayFormula(查询({day(Sheet1!A2:A)&text(month(Sheet1!A2:A),“(mmm)”),Sheet1!B2:F,iferror(regexextract(Sheet1!G2:G,“(.+):”),“选择Col7,求和(Col3),其中Col7''按Col7透视Col1分组”))

示例数据在表1中,希望在表2中查找,行数应该与不同的类别一样多,列应尽可能多的不同月份(最多12个课程)-数据被收集1年,所以不需要考虑一个和一个月两次。调整输入是不允许的,我可能会添加一个隐藏列,使用left+find来去除项目名称,但它会使表格更大,计算量更大,并且可能会更慢,因为在10+个不同的帐户中至少有10年的数据-我必须修改每个表格(每个表格都是一年的集合)和每个电子表格中的数据(每个电子表格都是一个不同的文件)它正在到达某个地方,但数据透视不正确,它为一个月的每一天创建一列(大约30列)-它应该每月求和(因此一月、二月等的类别求和,然后一月、二月等的类别2求和…)。我很抱歉要求更多,但公式真的很复杂,如果你能解释一下的话,我也许能解决它?谢谢谢谢谢谢,那很好,我需要按月分组,所以我更改了数组,据我所知,你所做的是在将数据传递给查询函数之前更改数据,对吗?一个问题,当数据透视时根据日期,排序是错误的,比如第10个月、第11个月、第12个月,然后是第2个、第3个、第4个……等等,也就是说,列的排序是错误的,我该如何解决呢?除此之外,它还可以很好地工作一次(希望最后一次)问题:在生成的表格中,当一个月内没有类型的条目时,单元格保持为空,如何用零(0)填充它以使图表正常工作?嗨,Peter,你可以通过检查isblank()来填充零。如果只使用月数(无文本),排序应该可以。你能检查一下这样的东西是否适合你吗:=ArrayFormula(if(isblank)(query({Sheet1!A2:F,iferror(regexextract(Sheet1!G2:G,“(.+):”))),“select Col7,sum(Col3),其中Col7''按Col7透视月(Col1)+1分组”)、0,query({Sheet1!A2:F,iferror(regexextract(Sheet1!G2:G,“(.+):”),“select Col7,sum(Col3)”,“select Col7,sum(Col3)是的,经过小小的调整,我终于得到了我所需要的。非常感谢你的帮助!