Ich habe Probleme bei der Auswahl mehrerer Werte durch eine GROUP BY
Klausel generiert. Ich versuche, ein vereinfachtes Beispiel einzurichten, was ich habe:Unterabfrage mit jedem Wert in der Gruppe von
Table CUSTOMERS Table PRODUCTS Table ORDERS
ID | NAME ID | DESCR | PROMO ID_P | ID_C
---+--------- ---+-------+------- -----+-----
1 | Alice 1 | prod1 | gold 1 | 1
2 | Bob 2 | prod2 | gold 2 | 3
3 | Charlie 3 | prod3 | silver 1 | 2
4 | prod4 | silver 3 | 1
Daraus würde ich lik jedes Produkt und jeden Kunden in einer einzigen Zelle
Results
PROMO | products | CUSTOMERS
-------+--------------+--------------------
gold | prod1, prod2 | Alice, Bob, Charlie
silver | prod3 | Alice
So etwas verbinden:
SELECT PRODUCTS.PROMO
, CONCAT(PRODUCTS.DESCR)
, STUFF(
(SELECT '/' + CUSTOMERS.NAME
FROM CUSTOMERS
WHERE CUSTOMERS.ID = ORDERS.ID
FOR XML PATH (''))
, 1, 3, '')
FROM PRODUCTS
INNER JOIN ORDERS
ON PRODUCTS.ID = ORDERS.ID_P
WHERE PRODUCTS.ID < 3
GROUP BY PRODUCTS.PROMO
Kann dies in SQL erreicht werden?
https://stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in-microsoft-sql-server-2005 – jarlh
@jarlh: Danke, ich habe mit diesem Post angefangen, aber ich bekomme, dass CUSTOMER.NAME in der Auswahlliste ungültig ist, weil es nicht in GROUP BY enthalten ist, aber ich möchte nicht nach Kunde oder nach Produkt gruppieren – dg3