Ich ueberlege gerade wie ich folgendes Problem loesen soll: Ich brauche eine Funktion, die fuer eine ausgewaehlte Anzahl von Parametern ermittelt, ob die restlichen Spalten (als Set gesehen) genau gleich sind. Wobei es auch auf die Sequenz ankommt.
Also zB:
Kunde Tag ProduktGekauft
K1 T1 P1
K2 T1 P2
K3 T1 P1
K4 T1 P1
K1 T2 P2
K2 T2 P1
K3 T2 P2
K4 T2 P2
K4 T3 P3
In diesem Scenario waere das Kaufverhalten nur von Kunde K1 und K3 gleich (K2 hat die Produkte in der falschen Reihenfolge gekauft, und K4 hat auch am Tag3 Produkt3 gekauft.
Meine Loesung waere folgende:
- GROUP BY Kunde
- ORDER BY Tag
- Concat & Hash die Produkte (in der richtigen Reihenfolge)
Es gibt zu dem Thema paar Loesungsansaetze (ich brauch das ganze in MSSQL):
- http://stackoverflow.com/questions/6899…rows-from-a-sub
- http://www.ialpine.net/post/MS-SQL-Me…to-one-row.aspx
- http://stackoverflow.com/questions/9472…-pivot-in-t-sql
- http://www.sqlprof.com/blogs/sqldev/a…-2005-2008.aspx
Das Problem mit PIVOT, XMLPATH, etc. ist, dass die Anzahl der Kunden und Tage variabel ist.
Ausser einer stored procedure, die in etwa so funktionieren koennte hab ich keine viel besseren Ideen:
Wobei GetSetHash(HashSource, OrderBy) ein char(32) = MD5 hash zurueckliefert. HashSource und OrderBy sollten eine beliebige Anzahl von Spalten sein koennen.
Hat jemand eine bessere Idee? Wie gesagt, MSSQL ist vorgegeben.