SQL (DB2) العودة متعددة تهم الشرطية في استعلام واحد

StackOverflow https://stackoverflow.com/questions/1018469

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا أحاول ملخصات شرطية متعددة مختارة إلى نتيجة واحدة الجدول على قاعدة بيانات يستند DB2.

مثال:

SELECT COUNT(FOO) FROM T1 WHERE T1.A=1 AS A_COUNT,
SELECT COUNT(FOO) FROM T1 WHERE T1.B=2 AS B_COUNT
Ext...

وهو محل تقدير أي مساعدة.

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

المحلول

وهذا سيعتمد على حدوث كل حالة:

select sum(case when t1.a = 1 then 1 else 0 end) as A_COUNT
     , sum(case when t1.b = 2 then 1 else 0 end) as B_COUNT
  from t1
 where t1.a = 1
    or t1.b = 2

نصائح أخرى

select count(case when t1.a = 1 then foo else null end) as A_COUNT
     , count(case when t1.b = 2 then foo else null end) as B_COUNT
  from t1
 where t1.a = 1
    or t1.b = 2

وأين الشرط اختياري بالمعنى الدقيق للكلمة ولكن قد يساعد الأداء. أيضا "لاغية آخر" ضمنيا عندما تم حذف بند آخر حتى يمكنك ترك بأمان أن قبالة كذلك.

select count(foo)
  from t1
 where a = 1
union
select count(foo)
  from t1
 where b = 2
....

وهذا سوف نفعل ذلك.

SELECT  A_COUNT as Type ,COUNT(FOO) FROM T1 WHERE T1.A=1, 

Union


SELECT B_COUNT as Type, COUNT(FOO) FROM T1 WHERE T1.B=2 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top