Je cherche des informations de reclasser relativement simple de la manière la plus efficace possible: En utilisant une sélection limitée de l'échantillon des données:sql définir une ligne par le nombre de fois/comment il apparaît que d'autres lignes
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()))
et le transformer en ceci:
ID | 2005 | 2006 | 2007 | 2008 | 2009 | 2010
001 | NULL | NULL | regular gift | NULL | Both gifts | NULL
si, fondamentalement, si ID est à la fois un seul et un cadeau régulier pendant un an, puis l'appeler « les deux dons », s'il n'y a qu'un seul cadeau alors « cadeau unique » et s'il n'y a qu'un cadeau régulier, alors «cadeau régulier».
Ces données seraient ensuite utilisées dans le cadre d'une autre requête plus importante. Je trouve qu'il est assez facile de travailler si une carte d'identité a donné un cadeau unique ou régulier (ou les deux), mais j'ai du mal à le faire d'année en année sans créer une série des tables temporaires qui ralentit les choses massivement
Merci d'avance :)
EDIT Ceci est une version très simplifiée des données réelles que j'ai - les données réelles ont jusqu'à 200 lignes par ID, et peut contenir plusieurs dons par année de chaque type.
Fantastique - fonctionne le plus rapidement pour ma table réelle ainsi acceptée comme réponse :) – Dibstar