私はmysqlデータベースのテーブルに多くのレコードを持っているので、例として2つのレコードを取るだけです。ここでは、次のとおりです。ケース表現の列から行へ
SELECT a.REPAIR_ESTIMATE_ID, a.EIR_REF,
a.PRE_APPROVED_DATE, a.FIRST_APPROVED_DATE, a.SECOND_APPROVED_DATE
FROM tb_master_repair_estimate a
WHERE a.REPAIR_ESTIMATE_ID IN (21,23)
私はこれを取得:
+--------------------+---------+-------------------+---------------------+----------------------+
| REPAIR_ESTIMATE_ID | EIR_REF | PRE_APPROVED_DATE | FIRST_APPROVED_DATE | SECOND_APPROVED_DATE |
+--------------------+---------+-------------------+---------------------+----------------------+
| 21 | B6790 | 2016-12-15 | 2016-12-16 | NULL |
| 23 | J6791 | 2016-12-10 | 2016-12-11 | 2016-12-13 |
+--------------------+---------+-------------------+---------------------+----------------------+
2 rows in set
私の目標は、私は、列PRE_APPROVED_DATE、FIRST_APPROVED_DATE、SECOND_APPROVED_DATEに(私の心の中で)インデックスにしたいです。
PRE-> A
FIRST -> B
SECOND -> C
だから、私はこのようなクエリを作成します: それはこのようにする必要があります
SET @pre = "A";
SET @first = "B";
SET @two = "C";
SELECT a.REPAIR_ESTIMATE_ID, a.EIR_REF,
CASE
WHEN a.PRE_APPROVED_DATE IS NOT NULL THEN @pre
WHEN a.FIRST_APPROVED_DATE IS NOT NULL THEN @first
WHEN a.SECOND_APPROVED_DATE IS NOT NULL THEN @two
ELSE 0
END AS `LEVEL`
FROM tb_master_repair_estimate a
WHERE a.REPAIR_ESTIMATE_ID IN (21,23)
をしかし、私はこのように取得:
+--------------------+---------+-------+
| REPAIR_ESTIMATE_ID | EIR_REF | LEVEL |
+--------------------+---------+-------+
| 21 | B6790 | A |
| 23 | J6791 | A |
+--------------------+---------+-------+
2 rows in set
私はこの
のように必要+--------------------+---------+-------+
| REPAIR_ESTIMATE_ID | EIR_REF | LEVEL |
+--------------------+---------+-------+
| 21 | B6790 | A |
| 21 | B6790 | B |
| 23 | J6791 | A |
| 23 | J6791 | B |
| 23 | J6791 | C |
+--------------------+---------+-------+
助言... それはとても感謝します。