Я нахожу, что, когда я пытаюсь выбрать столбец в выражении case SQL, он не работает, если я не оберну его в числовую функцию. Кажется, что max (цена) выбирает значение в столбце, а только цена, или price
всегда возвращает пустое.Выберите подзапрос внутри этого случая, когда оператор, ошибка sqlite?
Я думаю, что это ошибка.
Это не работает:
SELECT
auction,
CASE WHEN auction='1'
THEN (select max(bid.amount) from bid where bid.auction_id = auction.id)
ELSE price
END as price_string
FROM product
Это работает:
SELECT
auction,
CASE WHEN auction='1'
THEN (select max(bid.amount) from bid where bid.auction_id = auction.id)
ELSE max(price)
END as price_string
FROM product
Edit: фиксированной запятой.
Одно различие я вижу дополнительный запятая вы разместили в первом после 'price_string' ... который выглядит неправильно для меня. Но вы не указываете, что это означает, когда вы говорите «это не работает», поэтому это затрудняет устранение неполадок. – Marc
Эти два запроса ведут себя совершенно по-другому из-за агрегатной функции. Покажите некоторые примеры данных и желаемый результат. –
Ах, когда я говорю, что это не сработает, я имею в виду, что он возвращает пустое, а не то, что запрос терпит неудачу. А также цена столбца находится на самой таблице, что означает, что у нее есть только одно возможное значение для каждой строки; это не набор. – thouliha