【发布时间】:2020-12-04 13:42:23
【问题描述】:
我正在尝试计算列上今天和昨天的总数之间的差异。如果自我加入不是最好的方法,那很好,无论哪个能给我我想要的结果都应该没问题。
要求:
- 仅比较最近 2 天的数据,即使该表将包含多天的数据,但每天只有一个条目。
- 计算该列昨天总数和今天总数之间的差值。
问题
下面的代码返回一个零,我不明白为什么。
为什么不计算,请问我该怎么做才能满足要求?
IF OBJECT_ID('tempdb..#t1') IS NOT NULL DROP TABLE #t1
CREATE TABLE #t1 (
countID UNIQUEIDENTIFIER
,empCount VARCHAR(20)
,CountDate DATETIME
)
INSERT INTO #t1 (
countID
, empCount
, CountDate
)
VALUES
(NEWID(),'123000', GETDATE())
,(NEWID(),'100', '20200813')
,(NEWID(),'100', '20200810')
SELECT
today.countID
, (CAST(today.empCount AS INT)) - (CAST(yesterday.empCount AS INT)) AS CountDiff
, today.empCount
, today.CountDate
FROM #t1 AS today
INNER JOIN #t1 AS yesterday ON today.countID = yesterday.countID
AND yesterday.CountDate > (SELECT dateadd(day,datediff(day,2,GETDATE()),0))
【问题讨论】:
-
旁白:将
datetime用于date值可能会有问题。除了午夜之外,您实际上还有其他时间值吗? -
@HABO,是的,在某些情况下,我想知道它发生在什么时间,以确保它发生在另一个过程之后。
标签: sql tsql sql-server-2014