2016-05-27 9 views
0

ここはあなたにとって奇妙なものです。月の日数を決定すると、3月の月間に異なるカウントが返されます

私は1、結果はもちろんである30と他の31(である2016年3月の月の二つの異なる結果を返しているいくつかの理由月間

;WITH cteNetProfit AS 
(
    ---- NET PROFIT 
    SELECT DT.CreateDate 
     , SUM(DT.Revenue) as Revenue 
     , SUM(DT.Cost) as Cost 
     , SUM(DT.GROSSPROFIT) AS GROSSPROFIT 
     FROM 
    (
     SELECT CAST([createDTG] AS DATE) as CreateDate 
      , SUM(Revenue) as Revenue 
      , SUM(Cost) as Cost 
      , SUM(REVENUE - COST) AS GROSSPROFIT 
     FROM [dbo].[CostRevenueSpecific] 
     WHERE CAST([createDTG] AS DATE) > CAST(GETDATE() - 91 AS DATE) 
      AND CAST([createDTG] AS DATE) <= CAST(GETDATE() - 1 AS DATE) 
     GROUP BY createDTG 
     UNION ALL 
     SELECT CAST([CallDate] AS DATE) AS CreateDate 
       , SUM(Revenue) as Revenue 
       , SUM(Cost) as Cost 
       , SUM(REVENUE - COST) AS GROSSPROFIT 
     FROM abc.PublisherCallByDay 
     WHERE CAST([CallDate] AS DATE) > CAST(GETDATE() - 91 AS DATE) 
      AND CAST([CallDate] AS DATE) <= CAST(GETDATE() - 1 AS DATE) 
     GROUP BY CALLDATE 
    ) DT 
    GROUP BY DT.CreateDate 
) 
select distinct MONTH(CREATEDATE), DateDiff(Day,CreateDate,DateAdd(month,1,CreateDate)) 
FROM cteNetProfit 

の日数を決定する必要が

正しい)私は基礎となるデータが3月の31日間のデータしか持っていないことを検証します。 Febは閏年なので、DATEDIFF関数に影響します。残りの月は正しい#を返します。

2 29 
3 31 
3 30 
4 30 
5 31 
+1

可能な複製(HTTP解決策を見つけました.com/questions/691022/how-to-determined-the-month-in-a-month-in-a-SQL-server) –

+0

2月3日の 'CreatedDate'を共有することで、問題を特定するのに役立ちます – Arulkumar

+0

残念ですCreateDateには月の各日のデータがあり、日付のグループは3つだけで、日付は重複しません。それでは、3月のための複製の原因は何か、残りの月の複製の原因は何か。 –

答えて

0

2016-03-31の日付をヒットすると違いが生じます。 2016-03-30および2016-03-31のクエリを実行すると、DATEADDを使用して1 MONTHを加算した結果は、どちらの場合も2016-04-30になります。次の月の最終日を返します。

SELECT DATEADD(MONTH,1,'2016-03-30') , DATEADD(MONTH,1,'2016-03-31') 

この構文は機能していたようです(https://raresql.com/2013/01/06/sql-server-get-number-of-days-in-month/)。 [?SQL Serverの月の日数を決定する方法]:// stackoverflowの

SELECT DAY(DATEADD(ms,-2,DATEADD(MONTH, DATEDIFF(MONTH,0,@DATE)+1,0))) AS [Current Month] 
0

おかげで、入力のために、しかし、私は他の場所

select Distinct MONTH(CREATEDATE), Day(EOMONTH(CreateDate)) 
FROM cteNetProfit 
関連する問題