2009-06-19 27 views
6

Tôi đang thử chọn nhiều tóm tắt có điều kiện vào một kết quả bảng đơn trên cơ sở dữ liệu dựa trên DB2.SQL (DB2) Trả về nhiều số điều kiện trong một truy vấn

Ví dụ:

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... 

Any help is appreciated.

+0

xem câu trả lời của tôi. Tôi để lại một bình luận bởi vì họ dường như gửi thông báo cho người dùng stackoverflow nhanh hơn. – Eric

Trả lời

6

này sẽ đếm số lần xuất hiện của mỗi điều kiện:

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 
6
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 

Đâu là tùy chọn nói đúng nhưng có thể hỗ trợ hiệu suất. Ngoài ra "else null" là ngầm định khi mệnh đề else bị bỏ qua, do đó bạn cũng có thể bỏ điều đó một cách an toàn.

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

này sẽ làm điều đó.

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 
Các vấn đề liên quan