मुझे यकीन नहीं है कि इस तक कैसे पहुंचा जा सकता है - मुझे लगता है कि एक पिवट/अनपोट का उपयोग किया जाना चाहिए, लेकिन यह सुनिश्चित नहीं करना है कि इसे कैसे काम करना है (क्योंकि पिवोटिंग कॉलम एक गैर है -numeric)एसक्यूएल क्वेरी (संभावित रूप से पिवट/अनपिवोट के साथ हल करने योग्य?)
मैं है तालिका में निम्नलिखित (एक प्रश्न मैं संशोधित नहीं कर सकते) के आधार पर:
Category | 2005 | 2006 | 2007 | 2008 | 2009 | 2010
Lapsed donor | count(lapsed for 2005) |
New donor | count(new donor for 2005) |
2yrs consecutive | count(2yrs consecutive for 2005) |
etc...
:
CREATE TABLE #data
(donor_id NVARCHAR(50)
,last_gift DATETIME
,[2005] NVARCHAR(50)
,numgifts05 INT
,value_05 MONEY
,[2006] NVARCHAR(50)
,numgifts06 INT
,value_06 MONEY
,[2007] NVARCHAR(50)
,numgifts07 INT
,value_07 MONEY
,[2008] NVARCHAR(50)
,numgifts08 INT
,value_08 MONEY
,[2009] NVARCHAR(50)
,numgifts09 INT
,value_09 MONEY
,[2010] NVARCHAR(50)
,numgifts10 INT
,value_10 MONEY
)
INSERT INTO #data VALUES (001,'2000-03-23 00:00:00.000','lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00)
INSERT INTO #data VALUES (002,'2006-08-01 00:00:00.000','reactivated donor',1,25.00,'2yrs consecutive',2,47.20,'lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00)
INSERT INTO #data VALUES (003,'2010-02-12 00:00:00.000','non-donor',0,0.00,'non-donor',0,0.00,'non-donor',0,0.00,'non-donor',0,0.00,'new donor',2,112.50,'2yrs consecutive',1,116.08)
INSERT INTO #data VALUES (004,'2010-01-04 00:00:00.000','non-donor',0,0.00,'non-donor',0,0.00,'non-donor',0,0.00,'non-donor',0,0.00,'non-donor',0,0.00,'new donor',1,12.00)
INSERT INTO #data VALUES (005,'2009-12-09 00:00:00.000','non-donor',0,0.00,'non-donor',0,0.00,'non-donor',0,0.00,'non-donor',0,0.00,'new donor',1,18.00,'lapsed donor',0,0.00)
INSERT INTO #data VALUES (006,'2005-01-10 00:00:00.000','new donor',1,20.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00)
INSERT INTO #data VALUES (007,'2009-01-07 00:00:00.000','non-donor',0,0.00,'non-donor',0,0.00,'non-donor',0,0.00,'non-donor',0,0.00,'new donor',1,25.00,'lapsed donor',0,0.00)
INSERT INTO #data VALUES (008,'1997-11-05 00:00:00.000','lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00)
INSERT INTO #data VALUES (009,'1999-06-18 00:00:00.000','lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00,'lapsed donor',0,0.00)
INSERT INTO #data VALUES (010,'2010-03-09 00:00:00.000','3/4yrs consecutive',12,120.00,'3/4yrs consecutive',12,120.00,'5yrs+ consecutive',13,142.40,'5yrs+ consecutive',13,170.00,'5yrs+ consecutive',13,160.00,'5yrs+ consecutive',3,30.00)
और क्या मैं उत्पादन की जरूरत है एक मेज जो इस तरह दिखता है
हालांकि मेरी समस्या यह है कि अगर कोई मैं 2005 में एक लापता दाता है, वे 2006-2010 के लिए उस श्रेणी में जरूरी नहीं हैं, इसलिए एक व्यक्ति के पास प्रत्येक वर्ष एक अलग पंक्ति में शामिल होने की क्षमता है?
मुझे पता है कि श्रेणी सभी विकल्पों को निर्धारित किया जाता है, तो गतिशील पिवट या ऐसा कुछ के लिए कोई जरूरत नहीं है, के मामले में यह मदद करता है :)
मुख्य उद्देश्य की गिनती को देखने के लिए सक्षम होने के लिए है प्रत्येक वर्ष प्रत्येक श्रेणी के लिए एक नज़र में (इसलिए मैं एक दूसरे के खिलाफ सभी वर्षों की तुलना करता हूं) - किसी भी मदद की सराहना की !!
+1 उपयोगी DDL निम्नलिखित। –