-1
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi muốn tổng trạng thái thanh toán từ hai cột khác nhau dựa trên giá trị PaymentStatus - nhưng truy vấn này trả về NULL cho tổng. Tại sao nó không làm việc?
select payment_status,
CASE
WHEN 'PAID' THEN sum[paid_amount]
when 'Not Paid' then sum[total_amount_due ]
END
from monthly_fee
group by payment_status;
Đã hỏi ngày 3 tháng 9 năm 2016 lúc 16:20Sep 3, 2016 at 16:20
3
select sum[CASE WHEN payment_status = 'PAID' THEN paid_amount else 0 end] as paid,
sum[CASE WHEN payment_status = 'Not Paid' THEN total_amount_due else 0 end] as due
from monthly_fee
Đã trả lời ngày 3 tháng 9 năm 2016 lúc 16:27Sep 3, 2016 at 16:27
Juergen Djuergen djuergen d
197K36 Huy hiệu vàng281 Huy hiệu bạc348 Huy hiệu Đồng36 gold badges281 silver badges348 bronze badges
1
Nếu bạn muốn điều này có điều kiện, bạn cần đưa vào cột vào case
:
select payment_status,
[case payment_status
when 'Paid' then sum[paid_amount]
when 'Not Paid' then sum[total_amount_due ]
end]
from monthly_fee
group by payment_status;
Đây có vẻ như là một cách kỳ lạ để viết truy vấn, trừ khi bạn thực sự muốn hai hàng.
Đã trả lời ngày 3 tháng 9 năm 2016 lúc 16:30Sep 3, 2016 at 16:30
Gordon Linoffgordon LinoffGordon Linoff
1.2M53 Huy hiệu vàng599 Huy hiệu bạc743 Huy hiệu Đồng53 gold badges599 silver badges743 bronze badges
0
Các điều khoản WHEN
của bạn không phải là một điều kiện.
Tôi mong đợi được nhìn thấy một cái gì đó giống như
select payment_status,
CASE
WHEN payment_status = 'PAID' THEN sum[paid_amount]
when payment_status = 'Not Paid' then sum[total_amount_due ]
END
from monthly_fee
group by payment_status;
Đã trả lời ngày 3 tháng 9 năm 2016 lúc 16:30Sep 3, 2016 at 16:30
Gordon Linoffgordon LinoffPhilip Couling
1.2M53 Huy hiệu vàng599 Huy hiệu bạc743 Huy hiệu Đồng4 gold badges48 silver badges76 bronze badges
0
Các điều khoản WHEN
của bạn không phải là một điều kiện.
select sum[if[payment_status = 'PAID', paid_amount, 0]
+ if[payment_status = 'Not Paid', total_amount_due, 0]]
from monthly_fee
group by payment_status;
Tôi mong đợi được nhìn thấy một cái gì đó giống nhưSep 3, 2016 at 16:34
select payment_status,
CASE
WHEN payment_status = 'PAID' THEN sum[paid_amount]
when payment_status = 'Not Paid' then sum[total_amount_due ]
END
from monthly_fee
group by payment_status;
AndrejPhilip Coulingphilip couling1 gold badge18 silver badges21 bronze badges
Tôi có một bảng trông như thế này [trường hợp quá đơn giản của trường hợp thực tế để đưa ra quan điểm của tôi]
CREATE TABLE sales [
id int,
currency VARCHAR[5],
price int
shop_id int
];
Bây giờ tôi cần thực hiện một truy vấn sẽ cung cấp cho tôi một cái gì đó giống như bảng này, nhóm theo các cửa hàng nhưng đưa ra tổng doanh số cho mỗi loại tiền tệ, vấn đề của tôi là khi tôi làm cho cột tiền tệ không tổng hợp nó không thành công vì truy vấn của tôi trở nên không tiêu chuẩn. Khi tôi thêm tiền tệ vào nhóm sau đó mỗi loại tiền tệ sẽ tạo ra hàng mới, điều mà tôi không muốn. Tôi đã hết tùy chọn và sẽ đánh giá cao bất kỳ sự giúp đỡ hoặc con trỏ đến đúng hướng.
Tôi sử dụng MySQL nhưng sẽ đánh giá cao nếu tôi có được giải pháp hoạt động với nhiều cơ sở dữ liệu hơn [PostgreSQL đứng đầu danh sách sau khi MySQL]
Truy vấn hoạt động với kết quả không mong muốn
SELECT shop_id,
[CASE WHEN currency= "GBP" THEN SUM[price] ELSE 0 END] AS POUND,
[CASE WHEN currency= "USD" THEN SUM[price] ELSE 0 END] AS USDOLLAR
GROUP BY shop_id, currency
Dữ liệu nên được tạo ra bởi truy vấn
shop_id | POUND | USDOLLAR
-----------------------------------------
1 | 400 | 300
-----------------------------------------
2 | 250 | 100
-----------------------------------------
3 | 400 | 100
-----------------------------------------