Понятно, что у меня есть таблица со списком фруктовых предметов. Я хочу, в одном запросе, увидеть количество яблок, апельсинов, «яблок или апельсинов» и «других фруктов».T-SQL COUNT 'A', 'B' и 'A or B'
Как я могу достичь этого в T-SQL?
Понятно, что у меня есть таблица со списком фруктовых предметов. Я хочу, в одном запросе, увидеть количество яблок, апельсинов, «яблок или апельсинов» и «других фруктов».T-SQL COUNT 'A', 'B' и 'A or B'
Как я могу достичь этого в T-SQL?
SELECT
COUNT(*) AS Allfruits,
COUNT(CASE WHEN fruit = 'Apple' THEN 1 END) AS AppleCount,
COUNT(CASE WHEN fruit = 'Orange' THEN 1 END) AS OrangeCount,
COUNT(CASE WHEN fruit IN ('Apple','Orange') THEN 1 END) AS AppleOrOrangeCount,
COUNT(*) - COUNT(CASE WHEN fruit IN ('Apple','Orange') THEN 1 END) AS OtherFruitCount
FROM
MyTable
Примечание: CASE дает NULL без предложения ELSE или определенного явного состояния. COUNT игнорирует NULL.
В качестве примера ваше название и описание подразумевают, что у вас может быть строка с одним значением, например «яблоки или апельсины» ... на основе ответа @ gbn, мы можем теперь предположить, что вы имели в виду не что вы сказали, и каждая строка будет иметь особое значение, такое как 'apple' или' orange' или 'kiwi' ... –
@AaronBertrand Понятия в данных были бы слишком много объяснены. Я понимаю, но фрукты универсальны, и на них ответили эффективно. – Craig
@AaronBertrand Если вы посмотрите на мои предыдущие вопросы, почти все из тех, у кого не отмечен ответ, были неправильно отреагированы. – Craig