sql 如果没有找到记录,则取零作为值

sql get zero as value if no records been found

我有一个简单的问题正在四处寻找,但无法解决。我查询了当前日期,假设明天是星期二,但其中还没有数据,因为它是未来。而且里面还不能有记录。

当我 运行 查询时,它只显示 2 个名为 total | Date 的列 它按照我说的做。但现在我想让它显示 0 而不是只显示 2 列。

我确实搜索了 COALESCE,但由于某种原因它不起作用,它也没有给我任何错误。

SELECT
    SUM(totalExcl) AS total, 
    DATE_FORMAT(date_add, '%W') AS 'Date'  
FROM
    ex.ps_ox_quotation 
WHERE 
    WEEK(date_add) = WEEK (UTC_TIMESTAMP()) 
        AND saleType IN ('IEW' , 'A', 'Project')
        AND DAYOFWEEK(date_add) % 6 > 4 
GROUP BY Date 
ORDER BY 'Date' DESC 

我有什么(table) =

| |total | Date

我想要什么(table) =

| |total | Date
     0     Tuesday

今天是星期三,所以它是当前日期,这就是它显示的内容(顺便说一句,这是当前的)我只是在显示它:

| |total | Date
    500    Wednesday

尝试 IFNULL...

SELECT
    IFNULL(SUM(totalExcl),0) AS total, 
    DATE_FORMAT(date_add, '%W') AS 'Date'  
FROM
    ex.ps_ox_quotation 
WHERE 
    WEEK(date_add) = WEEK (UTC_TIMESTAMP()) 
        AND saleType IN ('IEW' , 'A', 'Project')
        AND DAYOFWEEK(date_add) % 6 > 4 
GROUP BY Date 
ORDER BY 'Date' DESC 

试试这个

SELECT
IF(SUM(totalExcl) is NULL,0,SUM(totalExcl)) AS total, 
DAYNAME(date_add) AS 'Date'  
FROM
ex.ps_ox_quotation 
WHERE 
WEEK(date_add) = WEEK (UTC_TIMESTAMP()) 
    AND saleType IN ('IEW' , 'A', 'Project')
    AND DAYOFWEEK(date_add) % 6 > 4 
GROUP BY Date 
ORDER BY 'Date' DESC 

或者你可以这样做

SELECT
IF(SUM(totalExcl) is NULL,0,SUM(totalExcl)) AS total, 
IF(DATE_FORMAT(date_add, '%W') is null,DAYNAME(now()),DATE_FORMAT(date_add, '%W')) AS 'Date'  
FROM
ex.ps_ox_quotation 
WHERE 
WEEK(date_add) = WEEK (UTC_TIMESTAMP()) 
    AND saleType IN ('IEW' , 'A', 'Project')
    AND DAYOFWEEK(date_add) % 6 > 4 
GROUP BY Date 
ORDER BY 'Date' DESC