HI,
Используя SQL Server 2005 у меня следующий запрос:
SELECT
contact_id
,YEAR(date_created) AS giftyear
,SUM(amount_exc_vat) AS year_total_xGA
,SUM(amount_inc_vat) AS year_total_inGA
,COUNT(*) AS numGifts
FROM gifts
GROUP BY contact_id
,Year(date_created)
, который возвращает данные, которые выглядят так:
contact_id | giftyear | year_total_xVAT |year_total_inVAT | numGifts
id001 | 2006 | 17.00 | 21.79 | 4
id001 | 2007 | 5.00 | 6.41 | 1
id001 | 2008 | 5.00 | 6.41 | 1
Затем я хочу повернуть эти данные, чтобы таблица выглядела следующим образом
contact_id | gift_2006 | 2006_excVAT | 2006_incVAT | 2007gifts | 2007_excVAT | 2007_incVAT | gift_2008 | 2008_excvat | 2008_incvat
id001 | 1 | 17.00 | 21.79 | 1 | 5.00 | 6.41 | 1 | 5.00 | 6.41
Таким образом, если gift_2006 и т. Д. - это, по сути, оператор CASE, в котором говорится, что если contact_id подарил подарок в 2006 году, тогда присвойте 1, иначе 0, чтобы для одного контакта вся информация содержалась в одной строке
Заранее спасибо:)