【问题标题】:Google Sheets: concat all items for each dateGoogle表格:连接每个日期的所有项目
【发布时间】:2016-06-10 14:00:35
【问题描述】:

我在 Google 表格中有日期和事件列表

| date     | eventName |
 ------------------
| 21/05/16 |   evt1    |
| 21/05/16 |   evt2    |
| 30/05/16 |   evt3    |
| 01/06/16 |   evt1    |
| 01/06/16 |   evt4    |

我想输出一个唯一日期的列表,将那天的所有事件连接到一个字符串中,如下所示:

| date     |     events  |
 ------------------------
| 21/05/16 |  evt1, evt2 |
| 30/05/16 |     evt3    |
| 01/06/16 |  evt1, evt4 |

我完全被难住了,我想我需要某种查询,但不知道如何将事件名称字符串连接在一起。任何帮助将不胜感激。

【问题讨论】:

  • 为什么你在这个问题上有 [sql] 标签?

标签: sql google-sheets formula spreadsheet


【解决方案1】:

由于您标记了问题,我猜您有兴趣使用QUERY 函数来完成此操作。我不知道该怎么做,因为任何GROUP BYPIVOT 操作都需要aggregation function,并且没有一个受支持的聚合器可以完成您的要求。

这里有一个替代方法,使用通用公式。

在您的 Google 电子表格中,您可以先使用 UNIQUE() 获取唯一日期列表,然后在下一列中使用 FILTER() 来收集同步事件。

例如,此处D2 包含公式=UNIQUE($A$2:A),而E2 包含=join(", ",filter($B$2:$B,$A$2:$A=$D2)),将其复制到以下单元格中。

【讨论】:

    【解决方案2】:

    在 sql 服务器中:

    我首先创建以下函数来连接单个日期的事件

    CREATE FUNCTION [dbo].[EventsDate] (@Date date) RETURNS varchar(50)
    BEGIN 
    DECLARE @Events VARCHAR(50)=''
    SELECT @Events = @Events + case when len(@Events)>0 then ',' else '' end + eventName
    FROM  (select eventName from [Events] nolock where [date]=@Date) as S
    RETURN @Events
    END
    

    然后是请求:

    select [date], [dbo].[EventsDate]([date]) as eventsName from [Events] nolock group by [date]
    

    【讨论】:

      【解决方案3】:

      也试试这个公式:

      ={UNIQUE(FILTER(A2:A,A2:A>0)),TRANSPOSE(
         SPLIT(
            ", "&join(", ",
               ARRAYFORMULA(
                  if(query(A:B,"select A where not A is null order by A",0)=
                     query(A:B,"select A where not A is null order by A limit "&COUNT(query(A:B,"select A where not A is null",0))-1,1),"","|")
                   & query(A:B,"select B where not A is null order by A",0)
                   & " "
               )
            )
         ,", |",0)
      )}
      

      这是单一公式的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-31
        • 1970-01-01
        • 1970-01-01
        • 2019-12-26
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多