0

クエリから次の結果が得られました

SELECT DISTINCT user_id, 
                IF(ra.status = 1, created_datetime, 'No record') AS ACTIVATED, 
                IF(ra.status = 0, created_datetime, 'No record') AS DE_ACTIVATED 
FROM   accounts ra 
WHERE  user_id IN ( 12345678 ); 

+----------+---------------------+---------------------+
| user_id  | ACTIVATED           | DE_ACTIVATED        |
+----------+---------------------+---------------------+
| 12345678 | No record           | 2013-04-28 02:32:36 |
| 12345678 | 2013-03-28 02:32:36 | No record           |
+----------+---------------------+---------------------+

アクティブ化されたものと非アクティブ化されたものを組み合わせて、レコードを1行だけにしようとしています。基本的にはこんな感じで作っています。

+----------+---------------------+---------------------+
| user_id  | ACTIVATED           | DE_ACTIVATED        |
+----------+---------------------+---------------------+
| 12345678 | 2013-03-28 02:32:36 | 2013-04-28 02:32:36 |
+----------+---------------------+---------------------+

クエリ忍者のスキルを構築する際に、どんな助けも大歓迎です。

よろしく

4

1 に答える 1

1

両方のMAX条件を取得しますが、「false」条件を に評価しnullます。次に、それをラップして、計算されたものがnullCOALESCEの場合、次のMAXように置き換えられますno record

SELECT user_id,
  COALESCE(MAX(IF(ra.status = 1, created_datetime, null)), 'No record') AS Activated,
  COALESCE(MAX(IF(ra.status = 0, created_datetime, null)), 'No record') AS Deactivated
FROM accounts ra
WHERE user_id IN (12345678)

複数のユーザーを照会する場合は、これを最後に追加します。

GROUP BY user_id
于 2013-04-26T02:56:08.817 に答える