Вообразите это как студенческий тест.
10 учеников получают оценку C.
6 студентов получают степень бакалавра.
1 студент получает оценку А.
Вместо того, чтобы показать, что 1 ученик получил A, есть ли способ показать имя ученика, который получил этот результат?
Это часть набора результатов, который я получаю. Эти 2 буквы представляют 2 первые буквы 6-буквенной строки, соответствующей полке и ее складу. Если количество (значение справа) равно 1, я хочу отобразить полное значение полки.
В настоящее время я использую SUBSTRING
, чтобы получить 2 буквы, и COUNT
, чтобы получить количество
Запрос, который я использую до сих пор, может показаться сложным, но здесь он
SELECT DISTINCT SUBSTRING(location, 1, 2) AS ShelfNum,
COUNT(location) as Quantity
FROM warehouse_locations
WHERE unitId_unitId = 1
GROUP BY SUBSTRING(location, 1, 2)
ORDER BY ShelfNum asc
Если я пытаюсь добавить полное местоположение в конце, если количество равно 1, я получаю ошибку группировки
2 ответа
Вы можете использовать выражение case
для выбора между max(name)
и count(location)
в зависимости от результата. Вам нужно будет преобразовать count(location)
в тип данных, который возвращается max(name)
.
Пример сервера Sql:
select
substring(location, 1, 2) as ShelfNum
, case when count(location) = 1 then max(name)
else cast(count(location) as varchar(32))
end as Quantity
from warehouse_locations
where unitId_unitId = 1
group by substring(location, 1, 2)
order by ShelfNum asc
Также: вам не нужно использовать distinct
, когда вы используете group by
.
Это будет работать.
SELECT CASE WHEN Quantity = 1
THEN location
ELSE ShelfNum END as ShelfNum
,Quantity
FROM (
SELECT DISTINCT SUBSTRING(location, 1, 2) AS ShelfNum,
location,
COUNT(location) as Quantity
FROM warehouse_locations
WHERE unitId_unitId = 1
GROUP BY SUBSTRING(location, 1, 2), location
)
ORDER BY ShelfNum asc
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.