2015-12-30 33 views
1

这是我的第一个问题,我希望你们能帮助我。 我试图根据具有以下列的表格制作视图:DAY_0,DAY_1,DAY_2, DAY_3,DAY_4,DAY_5,DAY_6
问题是我只想根据实际日期来比较列,并查看它是否返回值01
我想在这样的事情,但没有奏效:有没有办法在基于变量的比较中选择不同的列?

WHERE 'DAY_'+weekday(curdate()) = 1 

任何人知道如何帮助呢?

回答

2

使用功能

ELT(weekday(curdate())+1,DAY_0,DAY_1,..) 
+0

这是一个了不起的解决方案!非常感谢! –

+0

不客气! – splash58

0

不能使用这样的变量列名,但你可以做这样的事情:

WHERE 
    CASE WEEKDAY(CURDATE()) 
     WHEN 0 THEN DAY_0 
     WHEN 1 THEN DAY_1 
     ... 
    END CASE = 1 

你也可能想看看数据库规范化。

0

,但你可以这样做:

SELECT 
    CASE 
    WHEN WEEKDAY(CURDATE()) = 0 THEN day_0 
    WHEN WEEKDAY(CURDATE()) = 1 THEN day_1 
    WHEN WEEKDAY(CURDATE()) = 2 THEN day_2 
    WHEN WEEKDAY(CURDATE()) = 3 THEN day_3 
    WHEN WEEKDAY(CURDATE()) = 4 THEN day_4 
    WHEN WEEKDAY(CURDATE()) = 5 THEN day_5 
    WHEN WEEKDAY(CURDATE()) = 6 THEN day_6 
    END AS theDay 

FROM myTable; 
相关问题