Я хочу переклассифицировать некоторую относительно простую информацию наиболее эффективным из возможных способов: используя ограниченный выбор выборочных данных:
CREATE TABLE #data
(id varchar(30)
,payent_type varchar(30)
,payment_date DATETIME)
INSERT INTO #data values ('001','single gift',DATEADD(MM,-12,GETDATE()))
INSERT INTO #data values ('001','regular gift',DATEADD(MM,-39,GETDATE()))
INSERT INTO #data values ('002','regular gift',DATEADD(MM,-06,GETDATE()))
INSERT INTO #data values ('003','single gift',DATEADD(MM,-96,GETDATE()))
INSERT INTO #data values ('003','regular gift',DATEADD(MM,-96,GETDATE()))
INSERT INTO #data values ('003','single gift',DATEADD(MM,-1,GETDATE()))
INSERT INTO #data values ('004','single gift',DATEADD(MM,-54,GETDATE()))
INSERT INTO #data values ('005','regular gift',DATEADD(MM,-2,GETDATE()))
INSERT INTO #data values ('005','regular gift',DATEADD(MM,-8,GETDATE()))
INSERT INTO #data values ('006','single gift',DATEADD(MM,-12,GETDATE()))
INSERT INTO #data values ('007','regular gift',DATEADD(MM,-2,GETDATE()))
INSERT INTO #data values ('007','regular gift',DATEADD(MM,-6,GETDATE()))
INSERT INTO #data values ('008','single gift',DATEADD(MM,-1,GETDATE()))
INSERT INTO #data values ('009','single gift',DATEADD(MM,-80,GETDATE()))
INSERT INTO #data values ('010','single gift',DATEADD(MM,-54,GETDATE()))
и превращая его в следующее:
ID | 2005 | 2006 | 2007 | 2008 | 2009 | 2010
001 | NULL | NULL | regular gift | NULL | Both gifts | NULL
Где, в принципе, если у ID есть как один, так и обычный подарок на год, тогда назовите его «оба подарка», если есть только один подарок, то «единственный подарок», а если есть только обычный подарок, то «обычный подарок».
Эти данные затем будут использоваться как часть другого более крупного запроса.
Я считаю, что достаточно легко понять, дал ли ID когда-либо один или обычный (или оба) подарок., но я изо всех сил пытаюсь решить это из года в год, не создавая ряд временных таблиц, которые сильно замедляют работу
Заранее спасибо :)
РЕДАКТИРОВАТЬ Это очень упрощенная версия фактических данных, которые у меня есть - реальные данные имеют до 200 строк на один идентификатор и могут содержать несколько подарков в год для каждого типа.