SELECT
CASE
WHEN LastName IS NULL THEN FirstName
WHEN LastName IS NOT NULL THEN LastName + ', ' + FirstName
END AS 'FullName'
FROM
customers
GROUP BY
LastName,
FirstName
Это работает, потому что формула, которую Вы используете (Оператор выбора) никогда не может давать тот же ответ для двух различных исходных данных.
Дело обстоит не так, если Вы использовали что-то как:
LEFT(FirstName, 1) + ' ' + LastName
В таком случае "James Taylor" и "John Taylor" оба привел бы к "J Taylor".
, Если Вы хотели, чтобы Ваш вывод имел "J Taylor" дважды (один для каждого человека):
GROUP BY LastName, FirstName
, Если бы, однако, Вы хотели всего одну строку "J Taylor", Вы хотели бы:
GROUP BY LastName, LEFT(FirstName, 1)
Много лет спустя существует инструмент для очистки, больше сжатой техники, обеспеченной от PHP7 +... оператор космического корабля и сбалансированные массивы "критериев".
Код: ( Демонстрация )
uasort($array, function($a, $b) {
return [strtotime($a['Birthday']), $a['Hometown'] !== $a['CurrentLocation'], $a['Name']]
<=>
[strtotime($b['Birthday']), $b['Hometown'] !== $b['CurrentLocation'], $b['Name']];
});
var_export($array);
См. демонстрационную ссылку для демонстрационного входа и вывода.
Этот отрывок отсортирует по:
Имени: № 2 имеет !==
синтаксис только потому, что false
оценку рассматривают, как 0 и true
оценок рассматривают как 1.
, Если необходимо изменить какой-либо из порядков сортировки для какого-либо из критериев, просто подкачайте $a
и $b
в соответствующих элементах.