在Zend Framework 2的SQL查询中使用case/when/then

Mak*_*lin 4 sql zend-db zend-framework2

我有疑问:

SELECT user_name, group_id,
       CASE WHEN col_1 = 1 THEN 0 
            WHEN col_2 = 1 THEN 1 
            WHEN col_3 = 1 THEN 2 
       END as merge_col
FROM some_table
WHERE group_id = 10
ORDER BY merge_col.
Run Code Online (Sandbox Code Playgroud)

如何使用ZF2Zend\..\Sql,我可以实现这个查询吗?

更新:

感谢谁试图帮助我.它的工作如下:

$select->columns(array(
            'user_name', 
            'group_id', 
            'merge_col' => new Expression('CASE WHEN col_1 = 1 THEN 0 
                     WHEN col_2 = 1 THEN 1 
                     WHEN col_3 = 1 THEN 2 END')))
->where (array('group_id'=> 10))
->order ('merge_col');
Run Code Online (Sandbox Code Playgroud)

有更好的答案吗?

谢谢.

ako*_*ond 5

$select = $sql->select ('some_table');
$select->columns(array(
            new Expression('CASE WHEN col_1 = 1 THEN 0 
                     WHEN col_2 = 1 THEN 1 
                     WHEN col_3 = 1 THEN 2 
                         END AS merge_col'), 'user_name', 'group_id'))
->where ('group_id = 10')
->order ('merge_col');
Run Code Online (Sandbox Code Playgroud)