Để tổng hợp hai truy vấn trong một bảng, bạn cần có UNION
hoạt động. Điều đó đòi hỏi hai tập hợp kết quả và về cơ bản kết hợp chúng lại với nhau.
Union có ít hạn chế và điều quan trọng nhất là các truy vấn cần có cùng số cột.
Trong các truy vấn, bạn đã chọn số lượng cột khác nhau, credit_card_master
mỗi truy vấn có 5 cột và PG_NetBanking_Charges
mỗi truy vấn có 4 cột.
Từ những gì tôi có thể thấy, tôi đoán rằng card_type
từ truy vấn đầu tiên không có cột tương đương trong truy vấn thứ hai, vì vậy bạn có thể viết lại truy vấn thứ hai thành:
SELECT card_name, card_type, charge_amount, B2C_Amount_type, PGM.PG_Type
FROM ...
WHERE ...
UNION
SELECT PGM.Payment_Gateway_Name, null, PGNBC.Online_DC_Charge_Amt,
PGNBC.Online_DC_Charge_type, PGM.PG_Type
FROM ...
WHERE ...
Cũng lưu ý rằng các cột trong tập kết quả sẽ lấy tên của các cột từ truy vấn đầu tiên, vì vậy bạn có thể muốn thêm bí danh cột để có được tên chung / có ý nghĩa hơn cho cột. Ngoài ra, tôi thường thêm cột "Nguồn" cho phép tôi theo dõi nguồn gốc của hàng trong liên hợp, vì vậy truy vấn cuối cùng của tôi sẽ giống như sau:
SELECT 1 as Source, card_name as Name, card_type as Type,
charge_amount as Ammount, B2C_Amount_type as AmmountType,
PGM.PG_Type as PG_Type
FROM ...
WHERE ...
UNION
SELECT 2, PGM.Payment_Gateway_Name, null, PGNBC.Online_DC_Charge_Amt,
PGNBC.Online_DC_Charge_type, PGM.PG_Type
FROM ...
WHERE ...
và kết quả sẽ có các cột Source
, Name
, Type
, Ammount
, AmmountType
và PG_Type
, nơi Source
sẽ là 1 cho các hàng từ truy vấn đầu tiên và 2 cho các hàng từ truy vấn thứ hai.