6

フィールドのあるテーブルがありtypeます。

クエリでこのフィールドを確認するにはどうすればよいですか:

type== 'a'かどうかを確認したい

その後bes= amount, bed= '-'

ELSE bed= amount, bes= '-'

bes and bed は実際にはテーブルに存在しませんが、金額は (int) です

これは私の試みです:

SELECT billing.*,
    CASE billing.type WHEN 'A' THEN billing.amount AS bes, '-' AS bed ELSE billing.amount AS bed, '-' AS bes END
    FROM billing

... 検索が役に立たなかった

任意のソリューション...

4

5 に答える 5

8

行ごとに条件を作成でき、インラインステートメントをMySQLサポートします。 IF

SELECT billing.*,
       IF(billing.type = 'A', billing.amount, '-') AS bes,
       IF(billing.type = 'A', '-', billing.amount) AS bed
FROM   billing
于 2013-03-11T13:32:06.330 に答える
4

そのためには、次の 2 つの case ステートメントが必要です。

SELECT billing.*,
  CASE billing.type WHEN 'A' THEN billing.amount ELSE '-' AS bes END,
  CASE billing.type WHEN 'A' THEN '-' ELSE billing.amount AS bed END
FROM billing
于 2013-03-11T13:30:08.350 に答える
3
SELECT billing.*,
    CASE  WHEN billing.type =  'A' THEN billing.amount ELSE 0 END AS bes,
    CASE  WHEN billing.type <> 'A' THEN billing.amount ELSE 0 END AS bed
FROM billing
于 2013-03-11T13:31:15.040 に答える
3

戻り値は 1つCASE-WHEN-THEN-ELSEしか持てません...

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

SELECT billing.*,
CASE billing.type WHEN 'A' THEN billing.amount ELSE '-' END AS bes,
CASE billing.type WHEN 'A' THEN '-' ELSE billing.amount END AS bed 
FROM billing
于 2013-03-11T13:29:33.327 に答える
2

MySQL のバージョンに応じて、IFまたはCASE CASE (1)、CASE (2)の 2 つの異なる構文のいずれかを使用できます。

SELECT *,
  (IF type = 'A' THEN amount ELSE '-' END IF) bes,
  (IF type = 'A' THEN '-' ELSE amount END IF) bed
FROM billing
于 2013-03-11T13:55:14.513 に答える