Member 14656158 Ответов: 1

Как собрать данные из нескольких столбцов в один столбец


Всем Привет,

Мои текущие результаты отчета таковы в качестве примера:
Payment mode

Bill No.| Cash  | Credit Card| Google Pay| Phone Pe| TOTAL AMT|

000001    1000.0         0.0          0.0       0.0      1000.0
000002       0.0         0.0          0.0     956.0       950.0
000003       0.0       575.0          0.0       0.0       575.0
000004     824.0         0.0          0.0       0.0       824.0
000005       0.0         0.0        455.0       0.0       455.0

Но мне нужен один столбец с именем режим оплаты и данные, которые будут записаны следующим образом
Bill No.| Payment Mode  | TOTAL

000001     Cash            1000.0
000002     Phone Pe         956.0
000003     Credit Card      575.0
000004     Cash             824.0
000005     Google Pay       455.0

Заранее спасибо за помощь!

Что я уже пробовал:

Нужна помощь, мы можем сохранить все столбцы из таблицы 1 и добавить еще один столбец с именем режим оплаты, как в таблице 2 выше.

1 Ответов

Рейтинг:
2

MadMyche

То, что вы ищете, - это CASE оператор, который позволяет оценивать значения и возвращать одно значение. Это SQL-аналог a Switch() case блок.

Это похоже на использование IF...THEN...ELSE блок кода.

Я предпочитаю использовать блок CASE, когда могу, так как чувствую, что он выглядит чище, но у меня есть несколько действительно уродливых запросов, которые на самом деле имеют блок IF в предложении ELSE

Вот доказательство концепции; я сохранил его как все типы INT для удобства ввода/чтения. Пожалуйста, не оговорка ELSE.... если бы кто-то сделал сплит-платеж, он бы появился здесь, так как ни одно значение не было бы равно общей сумме

DECLARE @Invoices TABLE (BillNo INT, Cash INT, CreditCard INT, GooglePay INT, PhonePe INT, Total INT )

INSERT @Invoices VALUES
(000001, 1000.0, 0.0, 0.0, 0.0, 1000.0)
, (000002, 0.0, 0.0, 0.0, 956.0, 950.0)
, (000003, 0.0, 575.0, 0.0, 0.0, 575.0)
, (000004, 824.0, 0.0, 0.0, 0.0, 824.0)
, (000005, 0.0, 0.0, 455.0, 0.0, 455.0)

SELECT BillNo
,      CASE Total
            WHEN Cash       THEN 'Cash'
            WHEN CreditCard THEN 'CreditCard'
            WHEN GooglePay  THEN 'GooglePay'
            WHEN PhonePe    THEN 'PhonePe'
            ELSE            'Other'
      END as [PaymentMethod]
,     Total
FROM  @Invoices
Ссылка:
CASE (Transact-SQL) - SQL Server | Microsoft Docs[^]