Mám tabulku hodnoty (idosoba, datum, hodnota) a tabulku lide (idosoba,prijmeni, jmeno) Potřebuji pomocí SQL dotazu z tabulky vytáhnout max. hodnoty pro jednotlivé osoby pro každý datum - udělat kontingenční tabulku(pivot table). Pomocí googlu a metodou pokus omyl jsem dosáhl jakési kontingenční tabulky, kde skutečně ke každému datu vznikne sloupeček a v řádcích je očekávaný výsledek. Jak ale dostanu do tabulky místo idosoba příjmení a jméno? Jak tam zapracovat INNERJOIN? Popřípadě jak jinak dosáhnout výsledku, kde bude tabulka ve tvaru: Příjmení a jméno 1.1.2011 31.12.2011 1.1.2012 Novák Josef 50 80 85 Vokurka František 70 55 73 Tady jsem skončil ...
DECLARE @columns VARCHAR(8000)
SELECT @columns = COALESCE(@columns + ',[' + cast(datum as varchar) + ']',
'[' + cast(datum as varchar)+ ']')
FROM Hodnoty
GROUP BY datum
DECLARE @query VARCHAR(8000)
SET @query = '
SELECT *
FROM Hodnoty
PIVOT
(
MAX(hodnota)
FOR [datum]
IN (' + @columns + ')
)
AS p'
EXECUTE(@query)
Děkuji za každou odpověď
|