CREATE TABLE Payment ( PaymentHistoryID INT, paymentID INT, Amount DECIMAL(10, 2), receivedType CHAR(2), Reason VARCHAR(10) ); INSERT INTO PaymentVALUES (1,11, 5000.00,'Dr','ASD'),(2,12, 4000.00,'Cr', 'BG'),(3,11, 8000.00,'Cr', 'BG'),(4,11, 3000.00,'Dr', 'SD'),(5,11, 3000.00,'Cr','ASD'),(6,13,50000.00,'Cr','ASD'),(7,13,50000.00,'Cr','ASD'),(8,13, 1000.00,'Cr','ASD'),(9,13, 500.00,'Cr','ASD')SELECT paymentID, Sum(CASE receivedType WHEN 'Dr' THEN Amount ELSE -1 * Amount END) Amount, ReasonFROM PaymentGROUP BY paymentID, Reason
SELECT paymentID, [ASD], [BG],[SD]FROM (SELECT paymentID, CASE receivedType WHEN 'Dr' THEN Amount ELSE -1 * Amount END Amount, Reason FROM Payment) AS SourceTable PIVOT ( Sum(Amount) FOR Reason IN ([ASD], [BG], [SD]) ) AS PivotTable;