سؤال

لدي نموذج يمكن للأشخاص استخدامه لإرسال رسائل البريد الإلكتروني إلى عملائنا.لدى المستخدم خيار الاختيار بين رسالتين معلبتين (الرسالة "1" أو الرسالة "2").وراء الكواليس ، في كل مرة يضغطون على زر" إرسال "فإنه يسجل في جدول" السجلات " (طالما أنه يجعل من خلال معالجات الخطأ).

دعونا نتظاهر جدول السجلات يحتوي على 2 أعمدة:

CUST_ID  EMAIL_NUM
0000         1
0000         2
0000         1
0000         1
0001         2
0002         1
0002         1
0003         2
0003         2
0003         2

أحتاج إلى استعلام يحسب الآحاد والثنائيات لكل معرف مخصص.لذا يجب أن تبدو مجموعة النتائج كما يلي:

CUST_ID  EMAIL_1_COUNT  EMAIL_2_COUNT
0000          3              1
0001          0              1
0002          2              0
0003          0              3

لقد استخدمت العد ، مجموعة بيز ، وجود ، في حين ، الاتحاد ، يختار متداخلة ، ولكن كما قلت ، أنا ربما أكثر من تعقيد شيء سهل نسبيا.

هل كانت مفيدة؟

المحلول

giveacodicetagpre.

نصائح أخرى

هناك خيار آخر يجب مراعاته وهو استخدام استعلام محوري مع التحويل

TRANSFORM NZ(Count(RECORDS.Email_NUm),0) AS CountOfEmail_NUm
SELECT RECORDS.CUST_ID
FROM RECORDS
GROUP BY RECORDS.CUST_ID
PIVOT RECORDS.Email_NUm;

ومع ذلك ، فإن هذا من شأنه أن ينتج رؤوس أعمدة CUST_ID , 1, ، و 2.ولكن إذا كان لديك جدول آخر مع أنواع البريد الإلكتروني ثم قد يكون من المفيد (وخاصة إذا كان لديك عدد كبير من أنواع البريد الإلكتروني من 2)

قد تبدو سكل مثل هذا

TRANSFORM NZ(Count(r.Email_NUm),0) AS CountOfEmail_NUm
SELECT r.CUST_ID
FROM RECORDS r
     INNER JOIN EMAIL_TYPES et
     ON r.Email_NUm = et.Email_NUm
GROUP BY r.CUST_ID
PIVOT et.TYPE_NAME;

إنتاج هذا الناتج

   CUST_ID | Work | Home 
   -------   ----   ----
   0000    | 3    | 1
   0001    | 0    | 1
   0002    | 2    | 0
   0003    | 0    | 3
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top