Click here to Skip to main content
15,907,392 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
sir, i have i sql query:

SQL
select (Case when P_SalaryDueTotal.M_Code='Jan/2014' then sum(P_SalaryDueTotal.NetSalary) end) as 'Jan/2014',
        (Case when P_SalaryDueTotal.M_Code='Feb/2014' then sum(P_SalaryDueTotal.NetSalary) end) as 'Feb/2014',
        (Case when P_SalaryDueTotal.M_Code='Mar/2014' then sum(P_SalaryDueTotal.NetSalary) end) as 'Mar/2014'
FROM P_SalaryDueTotal
WHERE     (P_SalaryDueTotal.DepartmentID = 1359) AND (P_SalaryDueTotal.M_Code IN ('Jan/2014','Feb/2014','Mar/2014'))
GROUP BY P_SalaryDueTotal.M_Code




it gives output like :-

SQL
Jan/2014  Feb/2014  Mar/2014
NULL    198382.92   NULL
222316.00   NULL    NULL
NULL    NULL    247137.72


but i need out like:-

SQL
Jan/2014  Feb/2014  Mar/2014
222316.00   198382.92   247137.72   


how can i do it..
Posted
Comments
Kornfeld Eliyahu Peter 8-Dec-14 2:54am    
Look for aggregate function SUM...

hi,

Try this

select sum(isnull( (Case when P_SalaryDueTotal.M_Code='Jan/2014' then sum(P_SalaryDueTotal.NetSalary) end),0)) as 'Jan/2014',
sum(isnull( (Case when P_SalaryDueTotal.M_Code='Feb/2014' then sum(P_SalaryDueTotal.NetSalary) end),0)) as 'Feb/2014',
sum(isnull( (Case when P_SalaryDueTotal.M_Code='Mar/2014' then sum(P_SalaryDueTotal.NetSalary) end),0)) as 'Mar/2014'
FROM P_SalaryDueTotal WHERE (P_SalaryDueTotal.DepartmentID = 1359) AND (P_SalaryDueTotal.M_Code IN ('Jan/2014','Feb/2014','Mar/2014'))
GROUP BY P_SalaryDueTotal.M_Code
 
Share this answer
 
Comments
TCS54321 8-Dec-14 2:58am    
Error:Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
You can use pivot query to display your result :Check this query

SQL
DECLARE @MyColumns AS NVARCHAR(MAX),
    @SQLquery  AS NVARCHAR(MAX)
-- here first we get all the ItemName which should be display in Columns we use this in our necxt pivot query
select @MyColumns = STUFF((SELECT ',' + QUOTENAME(M_Code) 
                    FROM P_SalaryDueTotal
                    GROUP BY M_Code
                    ORDER BY M_Code
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')
-- here we use the above all Item name to disoplay its price as column and row display
set @SQLquery = N'SELECT DepartmentID,' + @MyColumns + N' from 
             (
                 SELECT   
                 DepartmentID    
        NetSalary as TotAmount 
    FROM P_SalaryDueTotal
    WHERE     (P_SalaryDueTotal.DepartmentID = 1359) AND (P_SalaryDueTotal.M_Code IN (''Jan/2014'',''Feb/2014'',''Mar/2014''))
            ) x
            pivot 
            (
                 SUM(TotAmount)
                for M_Code in (' + @MyColumns + N')
            ) p '
exec sp_executesql @SQLquery;

check my article related to pivot query.



Basic SQL Queries for Beginners[^]
 
Share this answer
 
hi

try this

SQL
select (Case when P_SalaryDueTotal.M_Code='Jan/2014' then sum(P_SalaryDueTotal.NetSalary) end) as 'Jan/2014',
        (Case when P_SalaryDueTotal.M_Code='Feb/2014' then sum(P_SalaryDueTotal.NetSalary) end) as 'Feb/2014',
        (Case when P_SalaryDueTotal.M_Code='Mar/2014' then sum(P_SalaryDueTotal.NetSalary) end) as 'Mar/2014' into #temp
FROM P_SalaryDueTotal
WHERE     (P_SalaryDueTotal.DepartmentID = 1359) AND (P_SalaryDueTotal.M_Code IN ('Jan/2014','Feb/2014','Mar/2014'))
GROUP BY P_SalaryDueTotal.M_Code


select sum(isnull([Jan/2014],0)) [Jan/2014],
sum(isnull([Feb/2014,0)) [Feb/2014],
sum(isnull([Mar/2014],0)) [Mar/2014] from #temp

drop table #temp
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900