1

これが私のコードです:

BEGIN

    SELECT SUM(
       CASE WHEN first_name > '' THEN 1 ELSE 0 END AS a 
       CASE WHEN last_name > '' THEN 1 ELSE 0 END AS b,             
       CASE WHEN country > '' THEN 1 ELSE 0 END AS c, 
       CASE WHEN state > '' THEN 1 ELSE 0 END AS d, 
       CASE WHEN city > '' THEN 1 ELSE 0 END AS e)
    AS total
    FROM employee_profile     
    WHERE id = user_id_in;

END

これにより、次のエラーが生成されます。

SQL 構文にエラーがある場合は、MySQL サーバーのバージョンに対応するマニュアルを参照して、最初の行に近い xxx エラーを使用する正しい構文を確認してください。

誰でもこれの正しい構文を手伝ってもらえますか?

MySQL サーバーのバージョン: 5.5.8

4

2 に答える 2

2

SUM単一の行の複数の引数(/列)ではなく、複数の行にわたって合計する単一の引数(/列)を取ります。これが機能しない理由です。

これはうまくいくはずです:

SELECT (CASE WHEN first_name > '' THEN 1 ELSE 0 END +
        CASE WHEN last_name  > '' THEN 1 ELSE 0 END +
        CASE WHEN country    > '' THEN 1 ELSE 0 END +
        CASE WHEN state      > '' THEN 1 ELSE 0 END +
        CASE WHEN city       > '' THEN 1 ELSE 0 END) AS total
FROM employee_profile     
WHERE id = user_id_in;
于 2013-02-13T11:40:45.037 に答える
0

このクエリを試してみてください。

SELECT SUM(
    CASE 
    WHEN first_name  = ''  THEN '1'
    WHEN last_name  = ''  THEN '1'
    WHEN country  = '' THEN '1'
    WHEN state  = '' THEN '1'
    ELSE '0'
  END) AS total
FROM employee_profile     
    WHERE id = user_id_in;
于 2013-02-13T13:15:42.920 に答える