You need to use PIVOTS
DECLARE @PayType TABLE ( PayTypeId INT, PayType VARCHAR(30))
DECLARE @PayDetails TABLE (EmpCode INT, PayTypeId INT, Amount Float)
INSERT INTO @PayType VALUES (1, 'Basic')
INSERT INTO @PayType VALUES (2, 'HRA')
INSERT INTO @PayType VALUES (3, 'Other Allownces')
INSERT INTO @PayDetails VALUES (1, 1, '12000')
INSERT INTO @PayDetails VALUES (1, 2, '6000')
INSERT INTO @PayDetails VALUES (1, 3, '3200')
INSERT INTO @PayDetails VALUES (2, 1, '5000')
INSERT INTO @PayDetails VALUES (2, 2, '3000')
INSERT INTO @PayDetails VALUES (2, 3, '1200')
SELECT EmpCode, [Basic], [HRA], [Other Allownces], ([Basic]+ [HRA]+[Other Allownces]) Total
FROM (SELECT EmpCode, PayType, Amount
FROM @PayType pt
JOIN @PayDetails pd ON pt.PayTypeId = pd.PayTypeId) As Source
PIVOT(MAX(Amount) FOR PayType IN ([Basic], [HRA], [Other Allownces]) )AS p
Result
EmpCode Basic HRA Other Allownces Total
1 12000 6000 3200 21200
2 5000 3000 1200 9200
Learn more about PIVOTS
http://msdn.microsoft.com/en-us/library/ms177410.aspx[
^]