Привет, У меня есть таблица, подобная этой, которая содержит сдвиг для людей в этот день. Мне нужно, чтобы быть классифицированы по сменамкак выбрать верхние 3 значения каждого столбца в mysql
+------------+----------+-----------------+
| shift_date | name | shift |
+------------+----------+-----------------+
| 2016-07-01 | Swamy | Morning Shift |
| 2016-07-01 | Hitesh | Morning Shift |
| 2016-07-01 | Naresh | Afternoon Shift |
| 2016-07-01 | Rambabu | Afternoon Shift |
| 2016-07-01 | Srinivas | Night Shift |
| 2016-07-01 | Ahmed | Night Shift |
| 2016-07-01 | Naveen | Week Off |
| 2016-07-01 | Karthik | Week Off |
+------------+----------+-----------------+
и мне нужен запрос, чтобы получить результат как
+------------+---------+-----------+----------+---------+
| shift_date | Morning | Afternoon | Night | WeekOff |
+------------+---------+-----------+----------+---------+
| 2016-07-01 | Swamy | Naresh | Srinivas | Naveen |
| 2016-07-01 | Hitesh | Rambabu | Ahmed | Karthik |
+------------+---------+-----------+----------+---------+
Я написал этот запрос,
select
shift_date,
CASE shift
WHEN shift <>'Morning Shift'
then name
end as Morning,
CASE shift
WHEN shift<>'Afternoon Shift'
then name
end as Afternoon,
CASE shift
WHEN shift<>'Night Shift'
then name
end as Night,
CASE shift
WHEN shift<>'Week Off'
then name
end as WeekOff
from roster
where shift_date ='2016-7-1'
order by morning desc ,afternoon desc, night desc ,weekoff desc;
но его получение результата, как
+------------+---------+-----------+----------+---------+
| shift_date | Morning | Afternoon | Night | WeekOff |
+------------+---------+-----------+----------+---------+
| 2016-07-01 | Swamy | NULL | NULL | NULL |
| 2016-07-01 | Hitesh | NULL | NULL | NULL |
| 2016-07-01 | NULL | Rambabu | NULL | NULL |
| 2016-07-01 | NULL | Naresh | NULL | NULL |
| 2016-07-01 | NULL | NULL | Srinivas | NULL |
| 2016-07-01 | NULL | NULL | Ahmed | NULL |
| 2016-07-01 | NULL | NULL | NULL | Naveen |
| 2016-07-01 | NULL | NULL | NULL | Karthik |
+------------+---------+-----------+----------+---------+
и мне нужно результат в
+------------+---------+-----------+----------+---------+
| shift_date | Morning | Afternoon | Night | WeekOff |
+------------+---------+-----------+----------+---------+
| 2016-07-01 | Swamy | Naresh | Srinivas | Naveen |
| 2016-07-01 | Hitesh | Rambabu | Ahmed | Karthik |
+------------+---------+-----------+----------+---------+
Ваш желаемый результат не будет иметь гибкой логики. Я предлагаю вам реализовать это на своем серверном языке. – KaeL
'MAX (CASE WHEN ...) ... GROUP BY shiftdate' (хотя я не понимаю' <> 'бит!?!? – Strawberry
Я пробовал MAX, но возвращал только один столбец, а <> - это ничего, кроме не равный – Ahmed