Попытка создания полей на основе case case

У меня возникли проблемы с запросом ниже. Я пытаюсь определить, является ли поле категории «A», «B» или «C», а затем создайте поле, основанное на категории. Это поле подвело бы поле платежей. Но я столкнулся с ошибкой, говоря «неправильный синтаксис рядом с ключевым словом As». Я создаю это в представлении SQL. Использование SQL Server 2008

SELECT r.id, r.category CASE WHEN r.category = 'A' then SUM(r.payment) As A_payments WHEN r.category = 'B' then SUM(r.payment) As B_payments WHEN r.category = 'C' then SUM(r.payment) As C_payments END FROM r_invoiceTable As r GROUP BY r.id, r.category 

У меня есть данные, где все вышеуказанные случаи должны выполняться, потому что данные, которые у меня есть, имеют A, B и C

Пример Data-r_invoiceTable

 Id --- Category ---- Payment 222 A ---- 50 444 A ---- 30 111 B ---- 90 777 C ---- 20 555 C ---- 40 

Желаемый результат A_payments = 80, B_payments = 90, C_payments = 60

Возможно, вы ищете это:

 SELECT SUM(CASE WHEN category = 'A' THEN payment END) AS A_payments, SUM(CASE WHEN category = 'B' THEN payment END) AS B_payments, SUM(CASE WHEN category = 'C' THEN payment END) AS C_payments FROM r_invoiceTable 

Может быть, вы хотите, чтобы это (сумма оплаты по категориям) ?:

 SELECT r.category, SUM(r.payment) As Payments FROM r_invoiceTable As r GROUP BY r.category 

Результат будет выглядеть следующим образом:

 category Payments --------- ------------ A 80 B 90 C 60 

Если вам нравятся эти цифры в одной строке, это наивный подход:

 SELECT (SELECT SUM(r.payment) From r_invoiceTable As r Where r.category = 'A') as A_Payment, (SELECT SUM(r.payment) From r_invoiceTable As r Where r.category = 'B') as B_Payment, (SELECT SUM(r.payment) From r_invoiceTable As r Where r.category = 'C') as C_Payment 
 SELECT * FROM dbo.r_invoiceTable PIVOT ( SUM(payment) FOR category IN ([a],[b],[c]) ) AS pivoted 
  • SQL много-ко-многим JOIN
  • Когда выгодно ограничивать соединение в SQL Server 2005?
  • Использование COALESCE в представлении SQL
  • Почему SQL-сервер сортирует кластерный индексный столбец слияния с таблицей
  • Возвращать унаследованные значения из соединения в таблице соединений?
  • Использовать индекс, когда JOIN'ing против нескольких столбцов
  • Объединяет объяснения Венна Диаграмма с более чем одним объединением
  • Группировка Cross JOIN SQL
  • Как расширить таблицу sql?
  • Data Vault 2.0 в SQL Server
  • Mulitple присоединяется к запросу
  • Interesting Posts

    Как я могу экспортировать запись в Excel из SQL Server 2008?

    Как удалить записи сервера на экране «Подключение к серверу» на SQL Server Management Studio?

    Вызов SQL-функций непосредственно из C #

    Привязать форму доступа к результатам из хранимой процедуры

    TSQL: порядок по возрастанию без имени столбца

    выполнение хранимой процедуры oracle из Sql Server 2008

    Любой другой способ решить этот запрос?

    Почему функции Scalar-value SQL Server работают медленнее?

    Как присоединиться к числу с диапазоном числа из другой таблицы

    Разбор XML: неожиданный конец ввода, во время выполнения этапа задания T-SQL

    Инструкция Drop table, но без использования хранимой процедуры

    Рамка единичных тестов для баз данных

    Изменение максимальной длины столбца varchar?

    Вычтите две даты в SQL и получите дни результата

    Как просмотреть роли и разрешения, предоставленные любому пользователю базы данных в экземпляре сервера Azure SQL?

    Давайте будем гением компьютера.