попробуйте это:
Select Name,
Min (Case When tag = 'A' Then Tag End) A,
Min (Case When tag = 'B' Then Tag End) B,
Min (Case When tag = 'C' Then Tag End) C,
email
From tableName
Group By Name, email
РЕДАКТИРОВАТЬ: объяснить ...
Каждый раз, когда вы используете Group By
, вы сообщаете обработчику запросов, что вы хотите, чтобы он агрегировал результаты в «сегменты»", где каждый сегмент определяется уникальными значениями в столбцах [или выражениях], определенных в предложении Group By.Это означает, что конечный набор результатов будет иметь одну и только одну строку для каждого уникального набора значений в тех столбцах [или выражениях], которые определены в Group By.Для всех других столбцов или выражений, используемых в запросе (кроме тех, которые определены в Group By), должно быть выражением, основанным на функции агрегирования (например, Count (), Sum (), Avg (), Min (), Max () и т. Д.), Которые создают значение на основе вычисления, которое будет применяться ко всем строкам в предварительно агрегированном наборе результатов.Если, например, я наберу Group By
первый символ фамилии:
Select Left(LastName, 1), Count(*),
Sum(Salaray, Avg(Height),
Min(DateOfBirth), etc.
From Table
Group By Left(LastName, 1)
, то я получу максимум 26 строк в выводе (по одной на каждую букву в алфавите) и вседругие столбцы в моих выходных данных должны основываться на некоторой функции агрегирования, которая должна применяться ко всем строкам в исходном наборе, где фамилия начинается с «A», затем ко всем строкам, где фамилия начинается с qa «B» и т. д..
В вашей задаче Group By используется просто для того, чтобы ограничить выходной набор одной строкой для каждого отдельного пользователя и сообщения электронной почты. Как только это будет сделано, в других столбцах оператора Select будет только одна строка.необходимо иметь Min()
, [Max()
будет работать так же хорошо), только для того, чтобы удовлетворить синтаксические требования, упомянутые в полужирный курсив выше. В вашем случае,в наборе будет только одна ненулевая строка, поэтому взятие Min () или Max () необходимо только из-за синтаксического требования ...