2016-06-10 7 views
1

ich eine Liste von Daten und Ereignissen in einem Google-BlattGoogle Sheets: Concat alle Einzelteile für jedes Datum

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

ich ausgeben will eine Liste der einzigartigen Termine habe, mit allen Ereignissen von diesem Tag verketteten zusammen in 1 Zeichenfolge wie folgt:

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

ich völlig ratlos bin, glaube ich, eine Abfrage irgendeiner Art benötigen, kann aber nicht herausfinden, wie die Ereignisnamen Strings zusammen verketten. Jede Hilfe würde sehr geschätzt werden.

+0

Warum haben Sie das [sql] -Tag auf dieser Frage? – Mogsdad

Antwort

1

in SQL Server:

ich zum ersten Mal die folgende Funktion erstellen, die Ereignisse für ein einzelnes Datum

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][email protected]) as S 
RETURN @Events 
END 

Und dann die Anfrage verkettet:

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

Da Sie die Frage getaggt Ich glaube, Sie waren daran interessiert, die QUERY Funktion zu verwenden, um dies zu erreichen. Ich weiß nicht, wie man das macht, da jede Operation GROUP BY oder PIVOT eine aggregation function erfordert, und keiner der unterstützten Aggregatoren kann erreichen, was Sie fragen.

Hier ist eine Alternative, mit gemeinsamen Formeln.

In Ihrer Google-Tabelle können Sie zuerst UNIQUE() verwenden, um die Liste der eindeutigen Daten abzurufen, und dann in der nächsten Spalte eine FILTER(), um zusammenfallende Ereignisse zu sammeln.

Zum Beispiel, hier D2 enthält die Formel =UNIQUE($A$2:A), während E2=join(", ",filter($B$2:$B,$A$2:$A=$D2)) enthält, die zu folgenden Zellen kopiert wird behandelt.

screenshot

0

auch versuchen, diese Formel:

={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) 
)} 

Dies ist einzige Formel-Lösung.