Я хотел бы использовать GROUP BY
и выберите значение, основанное на собственной агрегатной функции, аналогичной MIN
, MAX
и т.д.Как определить собственную собственную функцию агрегации SQL?
Например, учитывая данные ниже, я хотел бы, чтобы группа по id
и получить X
наличие, если какое-либо значение в GROUP BY
является X
, иначе вернуть ?
, если оно содержится ... и т.д.
+------------+--------------+------+
| date | availability | id |
+------------+--------------+------+
| 2015-09-08 | Y | 1 |
| 2015-09-07 | Y | 1 |
| 2015-09-06 | X | 1 |
| 2015-09-05 | | 1 |
| 2015-09-04 | X | 1 |
| 2015-09-04 | Y | 2 |
| 2015-09-05 | Y | 2 |
| 2015-09-06 | Y | 2 |
| 2015-09-07 | Y | 2 |
| 2015-09-08 | Y | 2 |
| 2015-09-09 | ? | 2 |
+------------+--------------+------+
SELECT * FROM availability GROUP BY ID [....]
Желаемый выход:
+------------+--------------+------+
| date | availability | id |
+------------+--------------+------+
| 2015-09-08 | X | 1 |
| 2015-09-04 | ? | 2 |
+------------+--------------+------+
[Нравится] (https://msdn.microsoft.com/en-us/library/ms182741.aspx) - хотя вы, вероятно, можете делать то, что хотите, с помощью 'count' /' sum' и 'case'. – Blorgbeard
Вам нужно обратиться к сборке? Можете ли вы просто определить, что вы хотите с помощью функции SQL? – CodeOcelot
Это зависит полностью от базы данных, которую вы не указали. –