【发布时间】:2014-05-25 07:46:14
【问题描述】:
我在编写 SQL 查询时遇到问题。我将通过我的 SQL 查询来解释:
SELECT p.Code, p.Name, SUM(h.PA = 1) AS PA, SUM(h.PB = 1) AS PB,
SUM(h.PG = 1) AS PG, SUM(h.GoedkeuringDoorNew = 'GF') AS GF,
SUM(h.GoedkeuringDoorNew = 'SB') AS SB,
SUM(h.GoedkeuringDoorNew = 'VIA') AS VIA, sum(h.Blanco) AS Blanco
FROM psthostess p
LEFT JOIN `psttodo-uit` h ON h.`Hostess Code` = p.Code
WHERE p.Indienst = 1 AND DATE(h.`afgewerkt tablet datum`) = CURDATE()
GROUP BY p.Code, p.Name
如您所见,我有一个带有 Indienst = 1 和 date = today 的 WHERE 分句。我做了一个LEFT JOIN,所以我得到了所有的字段(也是空的)。我刚刚添加了AND DATE(h.afgewerkt tablet datum) = CURDATE()。所以在我得到 18 行之前,现在我只得到一个,因为他还检查了日期。
但我想要 18 行,还有 p.Indienst = 1 但没有 DATE = CURDATE 的行。
我该怎么做?
【问题讨论】:
-
考虑提供适当的 DDL(和/或 sqlfiddle)以及所需的结果集。
-
@Strawberry:nielsv 的要求你不清楚吗?我认为他很清楚地解释了他的问题。
-
@ThorstenKettner 我不清楚 nielsv 是否想要 NULL 或 0 作为缺失结果的总和。