GROUP I CASE w jednym zapytaniu

0

Witam.
Mam trzy tabele:
Ceny_Promocje:
p_id | p_typ | p_typ_kh | p_nazwa | p_DataOD | p_DataDO
1 | 2 | 1 | jeden towar | 2014-05-09 | 2014-05-09
3 | 1 | 1 | trzy towary | 2014-05-09 | 2014-05-09

Ceny_PromocjePoz (zawierająca pozycje promocji zapisanych w Ceny_Promocje):
p_poz_id | p_poz_id_promo | p_poz_typ | p_poz_sposob | p_poz_tw_id | p_poz_wartosc
24 | 3 | 0 | 0 | 14286 | 1
25 | 3 | 0 | 0 | 14287 | 2
26 | 3 | 0 | 0 | 14288 | 3
27 | 1 | 0 | 0 | 14052 | 1

oraz tabelę tw__towar zawierającą opisy towarów.

Próbuje napisać zapytanie które da taki wynik:
ID | NAZWA | OD | DO | NAZWA/ILOSC
1 | jeden towar | 2014-05-09 | 2014-05-09 | CIASTKA
3 | trzy towary | 2014-05-09 | 2014-05-09 | 3

Tzn jeśli w Ceny_PromocjePoz jest jeden towar to pokazuje jego nazwę jeżeli więcej to pokazuje ile ich jest.

Wyklepałem coś takiego:

SELECT
	p_id AS ID, 
	p_nazwa AS NAZWA, 
 	p_DataOD AS OD, 
	p_dataDO AS DO,	
	CASE WHEN count(p_poz_tw_id)=1  THEN  (tw_nazwa) ELSE CAST(count(p_poz_tw_id) AS varchar(3)) END AS 'NAZWA/ILOSC'
FROM Ceny_Promocje
LEFT JOIN CENY_PromocjePoz ON p_id=p_poz_id_promo 
LEFT JOIN tw__towar ON p_poz_tw_id=tw_id    
GROUP BY p_id, p_nazwa, p_DataOD, p_dataDO, tw_nazwa

jednak przez tw_nazwa w GROUP BY otrzymuje taki wynik :
ID | NAZWA | OD | DO | NAZWA/ILOSC
1 | jeden towar | 2014-05-09 | 2014-05-09 | CIASTKA
3 | trzy towary | 2014-05-09 | 2014-05-09 | BISZKOPTY 1
3 | trzy towary | 2014-05-09 | 2014-05-09 | BISZKOPTY LINDUSIE 2
3 | trzy towary | 2014-05-09 | 2014-05-09 | BISZKOPTY LINDUSIE 3

wyrzucając tw_nazwa z zapytania:

SELECT
	p_id AS ID, 
	p_nazwa AS NAZWA, 
 	p_DataOD AS OD, 
	p_dataDO AS DO,	
	CASE WHEN count(p_poz_tw_id)=1 THEN  'tw_nazwa' ELSE CAST(count(p_poz_tw_id) AS varchar(3)) END AS 'NAZWA/ILOSC'
FROM Ceny_Promocje
LEFT JOIN CENY_PromocjePoz ON p_id=p_poz_id_promo 
LEFT JOIN tw__towar ON p_poz_tw_id=tw_id    
GROUP BY p_id, p_nazwa, p_DataOD, p_dataDO

Otrzymuje "prawie pożądany" (bo zamiast nazwy mam stały tekst) efekt:
ID | NAZWA | OD | DO | NAZWA/ILOSC
1 | jeden towar | 2014-05-09 | 2014-05-09 | tw_nazwa
3 | trzy towary | 2014-05-09 | 2014-05-09 | 3

Czy da się uzyskać taki efekt jak potrzebuję?
Jeśli tak to jak zmodyfikować zapytanie ?

Dziękuję za pomoc.

1

Myślę, że powinno starczyć zamiast 'tw_nazwa' dać MIN(tw_nazwa)

0

Działa :).

Dziękuję serdecznie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1