所以我的目标是总结我的价值观并按日期分组。
一开始我只是写了日期,但我需要提供 SUM
与 YY-MM-DD
, YY-MM
以及 YYYY
格式。
SELECT Table1.Date, Concat(Round(SUM((ISNULL(Price.Morning,0) + ISNULL(Price.Day,0) + ISNULL(Price.Evening,0))*Tickets.count),2),' €') AS 'Total'
FROM Table1
JOIN Tickets ON Tickets.Table1_ID = Table1.Table1_ID
JOIN Price ON Tickets.Price_ID = Price.Price_ID
GROUP BY Table1.Date
;
看起来是这样的:
现在我知道了:
SELECT Cast(Tabl1.Date as Date) AS 'Date', Concat(Round(SUM((ISNULL(Price.Morning,0) + ISNULL(Price.Day,0) + ISNULL(Price.Evening,0))*Tickets.Count),2),' €') AS 'Total'
FROM Table1
JOIN Tickets ON Tickets.Table1_ID = Table1.Table1_ID
JOIN Price ON Tickets.Price_ID = Price.Price_ID
GROUP BY Date;
我明白了:
所有的 ...Concat(Round(SUM((ISNULL(Price.Morning,0) + ISNULL(Price.Day,0) + ISNULL(Price.Evening,0))*Tickets.Count),2),' €') AS 'Total'...
因为在数据库中 NULL
价值观,这就是为什么我使用 ISNULL
功能和 0
万一是的话 NULL
因为否则它会破坏所有的计算。
你可以在这里看到那张表:
3条答案
按热度按时间c9qzyr3d1#
问题是
GROUP BY Date
是按Date
列,而不是Date
别名。更改为:vcudknz32#
修改了您的查询(将isnull更改为ifnull)并按日期分组为:
cx6n0qe33#
你可以用电脑得到你想要的东西
GROUP BY WITH ROLLUP
. 没有任何样本数据很难100%确定,但这个查询应该可以工作。请注意,您可以使用COALESCE
选择价格中的非空值而不使用IFNULL
在他们每个人身上。这将为您提供一个如下所示的表: