PLSQL如何对同一张表多次查询取不同内容?

A表的字段有:销售部门名称、销售部门销售金额、购买部门名称、购买部门购买金额(同一部门既有销售又有购买)
B表字段有:部门名称(大于A表)、部门类型
需求查询出的字段:部门名称、部门类型、销售金额合计、购买金额合计

SELECT A.部门名称, B.部门类型, SUM(A.销售部门销售金额) AS 销售金额合计, SUM(A.购买部门购买金额) AS 购买金额合计
FROM 表A A
JOIN 表B B ON A.部门名称 = B.部门名称 AND B.部门类型 <> '销售部门'
GROUP BY A.部门名称, B.部门类型;

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    在PL/SQL中,可以通过使用游标(cursor)和FOR循环来对同一张表进行多次查询以获取不同内容。下面是一个具体的解决方案:

    1. 首先,创建一个游标,用于选择表A的所有记录。
    DECLARE
      CURSOR department_cursor IS SELECT * FROM A;
    
    1. 创建两个变量,用于记录销售金额总计和购买金额总计。
      total_sales_amount A.销售部门销售金额%TYPE;
      total_purchase_amount A.购买部门购买金额%TYPE;
    
    1. 在BEGIN-END块中,使用FOR循环来遍历游标,并执行每一次查询。
    BEGIN
      FOR department_record IN department_cursor LOOP
        -- 清零总计变量
        total_sales_amount := 0;
        total_purchase_amount := 0;
    
        -- 查询销售金额总计
        SELECT SUM(销售部门销售金额) INTO total_sales_amount
        FROM A
        WHERE 销售部门名称 = department_record.销售部门名称;
    
        -- 查询购买金额总计
        SELECT SUM(购买部门购买金额) INTO total_purchase_amount
        FROM A
        WHERE 购买部门名称 = department_record.购买部门名称;
    
        -- 输出结果
        DBMS_OUTPUT.PUT_LINE('部门名称: ' || department_record.销售部门名称);
        DBMS_OUTPUT.PUT_LINE('部门类型: ' || department_record.部门类型);
        DBMS_OUTPUT.PUT_LINE('销售金额总计: ' || total_sales_amount);
        DBMS_OUTPUT.PUT_LINE('购买金额总计: ' || total_purchase_amount);
      END LOOP;
    END;
    

    这样,每次循环中就会根据当前部门名称执行查询,并输出相关结果。通过这种方式,可以对同一张表进行多次查询以获取不同内容。

    请注意,上述代码只是一个示例,具体实现可能需要根据实际情况进行调整。此外,如果数据量较大,可能需要考虑使用索引和合适的查询优化方法来提高性能。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^