【发布时间】:2016-05-27 17:48:28
【问题描述】:
这对你们来说很奇怪。
我需要确定一个月的天数
;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
由于某种原因,它返回了 2016 年 3 月的两个不同结果,一个结果是 30,另一个是 31(这当然是正确的)我验证基础数据只有 31 天的数据行进。由于二月是闰年,这会影响 DATEDIFF 功能。剩余月份返回正确的 #。
2 29
3 31
3 30
4 30
5 31
【问题讨论】:
-
分享这两个三月
CreatedDate可能有助于发现问题 -
抱歉被 cmets 弄糊涂了,CreateDate 有一个月中每一天的数据,并且只有 1 组日期用于三月 - 没有重复的日期。那么,刚刚三月而不是剩余几个月重复的原因是什么?
-
发布您的完整代码(编辑:cteNetProfit 里面有什么?哦,好吧,以防万一:)
-
select MONTH(CREATEDATE), DateDiff(Day,CreateDate,DateAdd(month,1,CreateDate)),CREATEDATE FROM cteNetProfit 应该会有所启发
标签: sql-server tsql