2017-03-01 66 views
1

我有一个简单的问题,我正在四处查看,但不能让它为我工作。我已经用当前日期进行了查询,并且可以说tomorow是星期二,但是由于它是未来,所以没有数据。而且还没有记录。如果没有找到记录,sql将得到零值

当我运行查询时,它只显示没有任何东西只有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 

我有什么(表)=

| |total | Date 

我想要什么(表)=

| |total | Date 
    0  Tuesday 

今天是星期三,因此是当前的日期,这就是它显示(顺便说一句,这是目前)我只是显示它:

| |total | Date 
    500 Wednesday 
+0

我想你需要''@@ ROWCOUNT''为 – Ditto

回答

1

试试这个

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 
+0

谢谢,我会尽力而为。 – Deniz

+0

确定后告诉我。 – denny

+1

第一个工作但在列日期给了我一个NULL。第二个人也做了这份工作,并且给了我不是空的,而是在日期栏中的实际日期名称。并且,如果它没有记录,那么它在列总数上给了我一个零(o),所以它完成了这项工作。谢谢 – Deniz

0

尝试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 
相关问题