Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 根据付款方式分组数据时发现问题_Sql_Oracle - Fatal编程技术网

Sql 根据付款方式分组数据时发现问题

Sql 根据付款方式分组数据时发现问题,sql,oracle,Sql,Oracle,我的表结构如下所示 表1: ID Name 1 Sar 2 Varun 3 Sagar 表2: Pay Id ID Payment Mode Amount 1 1 Cash 500 2 1 Credit Card 1000 3 1 Debit Card 10000 4 1 Net Banking

我的表结构如下所示

表1:

   ID   Name
   1    Sar
   2    Varun
   3    Sagar
表2:

   Pay Id   ID  Payment Mode    Amount
   1    1   Cash                 500
   2    1   Credit Card          1000
   3    1   Debit Card           10000
   4    1   Net Banking          5000
   5    1   Gift Voucher         100
需要获得以下指定的结果:

   ID   Cash    Credit Card Debit Card  Others
   1    500        1000       10000      5100

您能帮我一下吗。

如果您使用的是Oracle 11g,请使用pivot

WITH table_1(PayId,ID,PaymentMode, Amount) AS 
(SELECT 1, 1, 'Cash', 500 FROM dual UNION ALL
 SELECT 2, 1, 'Credit Card', 1000 FROM dual UNION ALL
 SELECT 3, 1, 'Debit Card', 10000 FROM dual UNION ALL
 SELECT 4, 1, 'Net Banking', 5000 FROM dual UNION ALL
 SELECT 5, 1, 'Gift Voucher', 100 FROM dual),
table_2(ID, Name) AS
(SELECT 1, 'Sar' from dual UNION ALL
 SELECT 2, 'Varun' from dual UNION ALL
 SELECT 3, 'Sagar' from dual),
------------------------------
--- Preparation of data ends
------------------------------
table_final AS 
(select t1.ID, t1.amount, CASE t1.paymentmode 
                       WHEN 'Cash' THEN 'Cash'
                       WHEN 'Credit Card' THEN 'Credit Card'
                       WHEN 'Debit Card' THEN 'Debit Card'
                       ELSE 'Others'
                   END AS payemnt_mod
  FROM table_1 t1 
  JOIN table_2 t2 
    ON (t1.id = t2.id))
SELECT * 
  FROM table_final
PIVOT (SUM(amount) AS total FOR payemnt_mod IN ('Cash' AS cash, 'Credit Card' AS credit_card, 'Debit Card' AS debit_card, 'Others' AS OTHERS));
输出:

ID  CASH_TOTAL  CREDIT_CARD_TOTAL   DEBIT_CARD_TOTAL    OTHERS_TOTAL
1   500         1000                10000               5100
您的查询将被删除

with table_final AS 
    (select t1.ID, t1.amount, CASE t1.paymentmode 
                           WHEN 'Cash' THEN 'Cash'
                           WHEN 'Credit Card' THEN 'Credit Card'
                           WHEN 'Debit Card' THEN 'Debit Card'
                           ELSE 'Others'
                       END AS payemnt_mod
      FROM table_1 t1 
      JOIN table_2 t2 
        ON (t1.id = t2.id))
    SELECT * 
      FROM table_final
    PIVOT (SUM(amount) AS total FOR payemnt_mod IN ('Cash' AS cash, 'Credit Card' AS credit_card, 'Debit Card' AS debit_card, 'Others' AS OTHERS));

pivot
通过
支付模式查看结果