Tôi muốn tạo bảng bằng cách sử dụng GROUP BY WITH ROLLUP và nhận tổng số hàng thay vì null.
$sql = "CHỌN
IF(YEAR(transactions.date) là null hoặc YEAR(transactions.date) = '','Total',YEAR(transactions.date)) là Năm,
IF(MONTH(transactions.date) là null hoặc MONTH(transactions.date) = '','Total',MONTH(transactions.date)) là Tháng,
SUM(transactions.amount)*0,01 dưới dạng Số tiền
TỪ giao dịch
NHÓM THEO
Năm,
Tháng
VỚI CUỘN LẠI
";
$result = $conn->query($sql);
nếu ($result->num_rows > 0) {
// dữ liệu đầu ra của mỗi hàng
trong khi($row = $result->fetch_assoc()) {
echo "||Năm:". $row["Năm"]."|THÁNG:" . $row["Tháng"]. "|Tổng:" . $row["Belopp"]. " ";
}
} khác {
echo "0 kết quả";
}
$conn->đóng();
Nhưng thay vì cho tôi Đúng hay sai, đầu ra lại cho tôi:
|Năm:2016|THÁNG:1|Tổng:408.1797 |
|Năm:2016|THÁNG:10|Tổng:-70.6915 |
|Năm:2016|THÁNG:11|Tổng:-189.0771 |
|Năm:2016|THÁNG:12|Tổng:-51.7362 |
|Năm:2016|THÁNG:2|Tổng:67.5001 |
|Năm:2016|THÁNG:3|Tổng:132.6177 |
|Năm:2016|THÁNG:4|Tổng:-36.4121 |
|Năm:2016|THÁNG:5|Tổng:-121.8800 |
|Năm:2016|THÁNG:6|Tổng:294.5811 |
|Năm:2016|THÁNG:7|Tổng:76.3505 |
|Năm:2016|THÁNG:8|Tổng:-201.3231 |
|Năm:2016|THÁNG:9|Tổng:-62.8723 |
|Năm:2016|THÁNG: |Tổng:245.2368 |
|Năm:2017|THÁNG:1|Tổng:156.2617 |
|Năm:2017|THÁNG:2|Tổng:-166.7156 |
|Năm:2017|THÁNG:3|Tổng:-183.3601 |
|Năm:2017|THÁNG:4|Tổng:-213.6732 |
|Năm:2017|THÁNG:5|Tổng:-149.0897 |
|Năm:2017|THÁNG:6|Tổng:-120.2097 |
|Năm:2017|THÁNG:7|Tổng:-302.1064 |
|Năm:2017|THÁNG:8|Tổng:-183.0638 |
|Năm:2017|THÁNG:9|Tổng:-119.3371 |
|Năm:2017|THÁNG: |Tổng:-1281.2939 |
|Năm: |THÁNG: |Tổng:347.6165
Nó trống, không phải "Tổng cộng". Tôi đã làm gì sai? Tôi cũng đã thử ifnull() nhưng vấn đề tương tự.
Nếu bạn muốn kiểm tra nó bằng SQL, bạn phải đặt truy vấn được nhóm vào truy vấn phụ và xử lý đầu ra trong truy vấn chính:
CHỌN IFNULL(Năm, 'Tổng cộng') LÀ Năm,
IFNULL(Tháng, 'Tổng cộng') AS Tháng,
Số lượng
TỪ (
CHỌN NĂM(transactions.date) NHƯ Năm,
THÁNG(giao dịch.ngày) NHƯ Tháng,
SUM(giao dịch.số tiền) * 0,01 Số tiền AS
TỪ giao dịch
NHÓM THEO Năm, Tháng
VỚI CUỘN LẠI
) Như x
Bạn cũng có thể thực hiện một truy vấn được nhóm và kiểm tra PHP VÔ GIÁ TRỊ
:
trong khi($row = $result->fetch_assoc()) {
nếu ($row["Năm"] == null) {
$row["Năm"] = "Tổng cộng";
}
nếu ($row["Tháng"] == null) {
$row["Tháng"] = "Tổng cộng";
}
echo "||Năm:". $row["Năm"]."|THÁNG:" . $row["Tháng"]. "|Tổng:" . $row["Belopp"]. " ";
}
Về mysql - Tôi không thể thay đổi Null thành 'Tổng cộng' khi sử dụng MYSQL GROUP BY AND ROLLUP vào năm (ngày) và tháng (ngày), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/47063161/
Tôi là một lập trình viên xuất sắc, rất giỏi!