0

所以我有疑问:

SELECT worker_ID as widp, DAYS, MAX(ID_WERSJI) max , funcion1 as FUN1,function2 as FUN2,function3 as FUN3,function4 as FUN4,function5 as FUN5
                FROM `grafik201105`
                    WHERE 
                        funcion1 IN ('one','two','three','four','five','six') OR
                        function2 IN ('one','two','three','four','five','six') OR
                        function3 IN ('one','two','three','four','five','six') OR
                        function4 IN ('one','two','three','four','five','six') OR
                        function5 IN ('one','two','three','four','five','six') AND
                        active=1 
                        GROUP BY widp, FUN1,DAYS) as dni

现在我需要在一列('give_me_all')中获得 fun1、fun2、fun3、fun4 和 fun5 并且!在 fun1='one' 中,将 'one' 替换为 'first',如果是 'two' 然后是第二,三个 => 第三...

我尝试使用 if(fun1='one','first',fun1) 但我认为这里更好的解决方案是使用 CASE 但我不知道如何使用它

4

1 回答 1

1

将两列或多列合并为一列,您只需简单地做(function1+function2+function3+function4+function5) AS give_me_all,但正如我所说,最好的方法是为您创建一个替换one为的函数,first然后它会像 一样(change(function1)+change(function2)+change(function3)+change(function4)+change(function5)) AS give_me_all,但编写函数是更高级的事情。尝试在这里阅读更多内容。否则它会看起来很难看,但仍然可能

`((CASE 
     function1 
        WHEN 'one' THEN 'first';
        WHEN 'two' THEN 'second';
  END;)+
  (CASE 
     function2 
        WHEN 'one' THEN 'first';
        WHEN 'two' THEN 'second';
  END;)
  ...) AS give_me_all`

看看它看起来有多糟糕?更好地学习编写自己的函数:)

于 2012-05-26T20:43:35.120 回答