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

そして今、私はfun1、fun2、fun3、fun4、fun5を1つの列('give_me_all')に入れる必要がありますそして!fun1 ='one'で'one'を'first'に置き換え、'two'の場合はsecond、three=>third。..

if(fun1 ='one'、'first'、fun1)を使おうとしていますが、ここでのより良い解決策はCASEを使用することだと思いますが、正確な使用方法がわかりません。

4

1 に答える 1

1

2 つ以上の列を 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 に答える