视图不显示与 mariadb 上带有子查询的命令相同的结果

View doesn't show same result as command with subquery on mariadb

亲爱的,

我尝试创建一个视图来汇总一年中每个类别(行)和月份(列)的交易,如下所示:

SELECT counterpart.id_category as catid, category AS Category, (
    SELECT COALESCE(SUM(amount), 0)
    FROM transaction
    INNER JOIN counterpart
        ON transaction.id_counterpart = counterpart.id_counterpart
    WHERE YEAR(date) = YEAR(now())
        AND MONTH(date) = 1
        AND id_category = catid
) AS Jan, [...]
FROM transaction
INNER JOIN counterpart
    ON transaction.id_counterpart = counterpart.id_counterpart
INNER JOIN category
    ON counterpart.id_category = category.id_category
WHERE transaction.id_user = 2
    AND YEAR(date) = YEAR(now())
GROUP BY category

我不知道这是不是一个好方法,至少它可以作为单个命令而不是视图。

看来,子查询的 WHERE id_category = catid 不能正常工作。

谢谢。

我怀疑条件聚合会比很多子查询更合适也更快。

例如

SELECT counterpart.id_category as catid, category AS Category, 
sum(case when month(date) = 1 then 1 else 0 end) as Jan,
sum(case when month(date) = 2 then 1 else 0 end) as feb,
sum(case when month(date) = 3 then 1 else 0 end) as Mar
FROM transaction
INNER JOIN counterpart
    ON transaction.id_counterpart = counterpart.id_counterpart
INNER JOIN category
    ON counterpart.id_category = category.id_category
WHERE transaction.id_user = 2
    AND YEAR(date) = YEAR(now())
GROUP BY counterpart.id_category,category