1

これらの列で構成される mysql テーブルがあります。

user_id、開始、終了、地区

各ユーザー ID には、次のように各地区の開始値と終了値があります。

+-----------------------------------+
| user_id | start | end  | district |
|       1 |  1000 | 2000 |    north |
|       1 |  1200 | 2200 |    south |
|       2 |   900 | 1900 |    north |
|       2 |   950 | 1700 |    south |
+-----------------------------------+

2 つの地区のそれぞれの開始と終了をリストする user_id ごとに 1 つの結果行を持つ選択を探しています。何かのようなもの

select user_id,
(start as no_st, end as no_en where district='north'),
(start as so_st, end as so_en where district='south');

与えるには:

+-----------------------------------------+
| user_id | no_st | no_en | so_st | so_en |
|       1 |  1000 |  2000 |  1200 |  2200 |
|       2 |   900 |  1900 |   950 |  1700 |
+-----------------------------------------+

これに対する魔法のクエリはありますか?

ありがとう、バート...

4

1 に答える 1

0

これは、ピボット クエリの 1 つのソリューションです。

SELECT user_id, 
  MAX(IF(district='north', start, null)) AS no_st,
  MAX(IF(district='north', end, null)) AS no_en,
  MAX(IF(district='south', start, null)) AS so_st,
  MAX(IF(district='south', end, null)) AS so_en
FROM `NoOneEverNamesTheirTableInSQLQuestions`
GROUP BY user_id;
于 2013-07-11T19:09:36.307 に答える