我的表包含多个名称和DT
的记录,我需要一个查询,根据DT
检查名称在过去2天内没有任何新记录,如何创建
Name DT
ABC 2017-09-17 06:02:23.000
ACD 2017-09-15 06:02:23.000
答案 0 :(得分:1)
在不知道您的表架构或示例数据的情况下,这是对查询的疯狂猜测,但您想要的是GETDATE() function。如果您想使用UTC时间,您还可以使用GETUTCDATE() function。
修改:已更新,以包含ROW_NUMBER() function。
编辑2:用CTE替换GETDATE()where子句,以排除在过去2天内具有dt的名称。
WITH CTE AS (
SELECT
name
FROM table
WHERE dt > GETDATE()-2
)
SELECT
name,
dt
FROM (
SELECT
name,
dt,
ROW_NUMBER() OVER (PARTITION BY name ORDER BY dt desc) AS rn
FROM table
LEFT JOIN CTE ON
table.name = CTE.name
WHERE CTE.name IS NULL
) tbl
WHERE rn = 1
答案 1 :(得分:1)
我想你需要这样的东西:
SELECT Name,dt
from
(SELECT Name,MAX(dt) dt
FROM your_table
GROUP BY NAME) a
where dt < GETDATE()-2
答案 2 :(得分:0)
BEGIN TRAN
CREATE TABLE #CM (Name NVARCHAR(06), DT DATETIME)
INSERT INTO #CM
SELECT 'ABC','2017-09-17 06:02:23.000' UNION ALL
SELECT 'ACD','2017-09-15 06:02:23.000'
SELECT * FROM #CM
WHERE CONVERT(NVARCHAR(105),dt) < CONVERT(NVARCHAR(105),GETDATE()-2)
ROLLBACK TRAN