【问题标题】:Google Sheets outer join on 2 tables that get summarised谷歌表格外连接 2 个汇总表
【发布时间】:2020-05-06 08:48:48
【问题描述】:

我正在开发一份报告,需要在 Google 表格中 表 1 包含由一个案例所有者打开和拥有的所有当前案例,每个案例 1 行,每个案例所有者每月多个案例(样本表有 4 个月的数据) 表 2 包含所有已结案的案件以及结案者,每个案件 1 行,每个案件所有者每月多个案件(样本表有 4 个月的数据)

打开的工作表中可能存在关闭工作表中不存在的案例所有者 关闭工作表中可能存在打开工作表中不存在的案例所有者

我知道如何创建一个单独汇总两个原始数据的 query() 函数 - 我想要做的是查询一个连接表以在 1 个表中获取打开和关闭的案例。 在示例文件中,A5 和 F5 中有 2 个表。这些是我查看 query() 函数的工作原理——我想要的实际报告在 K5 中

我正在苦苦挣扎的地方是将这些汇总到一份总结报告中,该报告显示了过去 3 个月的数据

澄清一下 - 我想要做的是有一个从 2 个 RAW 表中查询并创建摘要报告的功能

样本表应该更清楚地说明我需要做什么

https://docs.google.com/spreadsheets/d/1QEd9ZauY0YrbRWNu35tDTk6SkL1PaIZLtSOCd1A2fDY/edit?usp=sharing

OPEN 案例的输出:

=query('Raw Data'!A:N,"Select B, count(A) where N >= date '2020-02-01' group by B pivot N")

CLOSED 案例的输出

=query('Raw Data - Closed'!A:N,"Select A, count(B) where H >= date '2020-02-01' AND H <= date '2020-04-01' group by A pivot H")

任何指针?

【问题讨论】:

    标签: google-sheets google-sheets-formula transpose array-formulas google-sheets-query


    【解决方案1】:

    尝试:

    =ARRAYFORMULA(SUBSTITUTE(TRANSPOSE(QUERY(TRANSPOSE({{
     IF(ISNUMBER(A5:D5*1), A5:D5&" A"&A3, A5:D5); A6:D}, 
     IFNA(VLOOKUP(A5:A, {IF(ISNUMBER(F5:I5*1), F5:I5&" "&F3, F5:I5); F6:I}, 
     COLUMN(G5:I5)-(COLUMN(F5)-1), 0))}), "order by Col1", 1)), " AOpen", " Open"))
    


    =ARRAYFORMULA(SUBSTITUTE(TRANSPOSE(QUERY(TRANSPOSE({{
     IF(ISNUMBER(
     QUERY('Raw Data'!A:N, "select B,count(A) where N >= date '2020-02-01' group by B pivot N limit 0")*1), 
     QUERY('Raw Data'!A:N, "select B,count(A) where N >= date '2020-02-01' group by B pivot N limit 0")&" AOpen", 
     QUERY('Raw Data'!A:N, "select B,count(A) where N >= date '2020-02-01' group by B pivot N limit 0")); QUERY(
     QUERY('Raw Data'!A:N, "select B,count(A) where N >= date '2020-02-01' group by B pivot N"), "offset 1", 0)}, 
     IFNA(VLOOKUP(INDEX(
     QUERY('Raw Data'!A:N, "select B,count(A) where N >= date '2020-02-01' group by B pivot N"),,1), {IF(ISNUMBER(
     QUERY('Raw Data - Closed'!A:N, "select A,count(B) where H >= date '2020-02-01' and H <= date '2020-04-01' group by A pivot H limit 0")*1), 
     QUERY('Raw Data - Closed'!A:N, "select A,count(B) where H >= date '2020-02-01' and H <= date '2020-04-01' group by A pivot H limit 0")&" Closed", 
     QUERY('Raw Data - Closed'!A:N, "select A,count(B) where H >= date '2020-02-01' and H <= date '2020-04-01' group by A pivot H limit 0")); QUERY(
     QUERY('Raw Data - Closed'!A:N, "select A,count(B) where H >= date '2020-02-01' and H <= date '2020-04-01' group by A pivot H"), "offset 1", 0)}, 
     SEQUENCE(1, COLUMNS(
     QUERY('Raw Data - Closed'!A:N, "select A,count(B) where H >= date '2020-02-01' and H <= date '2020-04-01' group by A pivot H"))-1, 2, 1), 0))}), "order by Col1", 1)), " AOpen", " Open"))
    

    【讨论】:

    • 感谢您的快速回复——不幸的是,我意识到我最初的问题并不清楚——我需要做的是直接从“原始”数据表中报告。我在那里的 2 个表只是为了证明我已经弄清楚如何查询表(实际的查询公式比示例公式复杂得多)
    • 非常感谢 - 它让我得到了想要的结果 - 我现在把公式拆开 - 你能帮我理解它的逻辑 - 它似乎正在为标题做一些字符串替换,但我还在难以理解逻辑
    • 如果你指的是 SUBSTITUTE 函数,那么是的,QUERY 是按字母顺序排序的,这意味着 C 在 O 之前,但你希望它先排序打开然后关闭,所以我们在 O 之前添加 A,然后排序它然后将 AO... 替换为 O...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多