aggregation
SELECT SUM(CASE WHEN Detail.IsNew = 1 THEN Detail.Qty ELSE 0 END) AS NewItems,
SUM(CASE WHEN Detail.IsNew = 1 THEN Detail.ItemPrice ELSE 0 END) AS NewItemsValue,
SUM(CASE WHEN Detail.IsOriginal = 1 THEN Detail.Qty END) AS OriginalItems,
SUM(CASE WHEN Detail.IsOriginal = 1 THEN Detail.ItemPrice ELSE 0 END) AS OriginalItemsValue,
SUM(Pay.PaymentValue) AS Paid,
SUM(Detail.ItemPrice) AS ItemsValue,
SUM(Detail.Qty) AS TotalItems,
MAX(CASE WHEN Pay.PaymentMethodId=1 THEN Pay.PaymentValue END) AS Cash,
MAX(CASE WHEN Pay.PaymentMethodId=2 THEN Pay.PaymentValue END) AS Visa
FROM Transactions AS Trans JOIN
TransactionDetails AS Detail
ON Trans.TransactionId = Detail.TransactionId JOIN
Payments AS Pay
ON Trans.TransactionId = Pay.TransactionId
GROUP BY Trans.TransactionId;
join
select TransactionId,
sum(case when IsNew = 1 then qty else 0 end) as NewItems,
sum(case when IsNew = 1 then ItemPrice else 0 end) as NewItemsValue,
sum(case when IsOriginal = 1 then Qty else 0 end) as OriginalItems,
sum(case when IsOriginal = 1 then ItemPrice else 0 end) as OriginalItemsValue, count(*) as TotalItems, sum(PaymentValue) as paid
from TransactionDetails AS Detail
group by TransactionId;