SQL (DB2) العودة متعددة تهم الشرطية في استعلام واحد
سؤال
وأنا أحاول ملخصات شرطية متعددة مختارة إلى نتيجة واحدة الجدول على قاعدة بيانات يستند 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
لا تنتمي إلى StackOverflow