2017-08-17 37 views
-1

,我有以下数据:如何显示范围的日期之间的数据

entry storenum busidate daily_budget 
1  1   2017-07-01 4000 
2  1   2017-07-02 1000 
3  1   2017-07-03 6000 
4  1   2017-07-04 7000 
5  1   2017-07-05 12000 

我需要显示所有的日期(S)的范围之间的数据。

我试图显示范围日期(s)之间的所有数据。这里是我当前的查询:

SELECT 
(CASE WHEN a.busidate BETWEEN '2017-07-01' AND '2017-07-05' THEN a.daily_budget ELSE 0 END) as Ideal, 
b.store_name, b.storenum 
FROM dummy_daily a JOIN site_store b ON b.storenum=a.storenum 
WHERE b.storenum='1' 
GROUP BY a.storenum 

上面的查询只给我2017-07-01结果,而不是2017-07-012017-07-05之间的数据。这里是我的查询结果的示例:

Ideal  store_name   storenum 
4000  Sunway Putra Mall 1 

我需要显示日期范围之间的所有数据。

+0

更新你的查询,设置'GROUP BY a.busidate'并在'WHERE'子句中使用'DATE RANGE'条件。 –

+0

:P我认为它也与日期范围有关,但我意识到他使用日期范围来确定多少daily_budget分配..唯一的问题实际上是“GROUP BY” –

回答

0

感谢@Sumon Sarker作为您的建议。你的建议是完全正确的 下面是日期(或多个)

SELECT 
a.daily_budget as Ideal, 
b.store_name, b.storenum 
FROM dummy_daily a JOIN site_store b ON b.storenum=a.storenum 
WHERE b.storenum='1' and a.busidate BETWEEN '2017-07-01' AND '2017-07-05' 
GROUP BY a.busidate 
0

的罪魁祸首可能是之间显示的所有行的答案“GROUP BY”

试试下面的查询

SELECT 
    b.storenum, 
    b.store_name, 
    (CASE 
     WHEN a.busidate BETWEEN '2017-07-01' AND '2017-07-05' 
     THEN a.daily_budget ELSE 0 END 
    ) AS Ideal 
    FROM dummy_daily a JOIN site_store b ON b.storenum=a.storenum 
    WHERE b.storenum=1 
    GROUP BY b.storenum,b.store_name, Ideal