Click here to Skip to main content
15,885,309 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hey guys, im just wondering can someone help me with a bit of sql, I want to check if a column date is the current month and if so preform certain calculations if it is. My Sql
SQL
SELECT  dg.DestinationGroupName AS Destination, c.CarrierShortName AS Carrier,
       SUBSTRING(CONVERT(VARCHAR(11), ba.CDRDate, 106), 4, LEN(CONVERT(VARCHAR(11),ba.CDRDate, 106))) AS Month,
   --IF DatePart(ba.CDRDate) = DatePart(getdate())
   --BEGIN
       SUM(ba.TotalDuration) / 60 AS DurationInMinutes,
       SUM(ba.TotalCost) AS TotalRevenue, SUM(av.AvgCost * ba.TotalDuration)
       AS TotalCost, SUM(ba.TotalCost) - SUM(av.AvgCost * ba.TotalDuration) AS Margin
   --ELSE
   --  SUM(ba.TotalDuration) / 60 * 31 AS DurationInMinutes,
   --  SUM(ba.TotalCost) / 31 AS TotalRevenue, SUM(av.AvgCost * ba.TotalDuration) / 31
   --  AS TotalCost, SUM(ba.TotalCost) - SUM(av.AvgCost * ba.TotalDuration) AS Margin
   --END
   FROM

The commented out code is what I am trying to acheive in my query.
Thanks in advance guys.
Posted

1 solution

Try using CASE[^] statement.
here is a sample
SQL
SELECT  dg.DestinationGroupName AS Destination, c.CarrierShortName AS Carrier,
        SUBSTRING(CONVERT(VARCHAR(11), ba.CDRDate, 106), 4, LEN(CONVERT(VARCHAR(11),ba.CDRDate, 106))) AS Month,

     CASE WHEN DatePart(ba.CDRDate) = DatePart(getdate()) THEN SUM(ba.TotalDuration) / 60
          ELSE SUM(ba.TotalDuration) / 60 * 31 END AS DurationInMinutes,

     CASE WHEN DatePart(ba.CDRDate) = DatePart(getdate()) THEN SUM(ba.TotalCost)
          ELSE SUM(ba.TotalCost) / 31 END AS TotalRevenue,

     CASE WHEN DatePart(ba.CDRDate) = DatePart(getdate()) THEN SUM(av.AvgCost * ba.TotalDuration)
          ELSE SUM(av.AvgCost * ba.TotalDuration) / 31  END AS TotalCost,

     SUM(ba.TotalCost) - SUM(av.AvgCost * ba.TotalDuration) AS Margin
    FROM --....

Since you are using aggregate functions you will also need to use GROUP BY (Transact-SQL)[^]
 
Share this answer
 
Comments
frostcox 18-Dec-12 7:59am    
Thank you so much sir.

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