2017-09-19 1 views
0

テーブルには名前とDTの複数のレコードが含まれていますが、名前を確認するクエリはDTに基づいて過去2日間で確認できませんあなたのテーブルのスキーマまたはサンプルデータを知らずx日のDB問合せなし

Name  DT 
ABC  2017-09-17 06:02:23.000 
ACD  2017-09-15 06:02:23.000 
+1

してください、ショーのテーブル構造、サンプルデータ、および予想される結果。 – Sami

答えて

1

は、私はあなたがこのようなものが必要だと思う:

SELECT Name,dt 
from 
(SELECT Name,MAX(dt) dt 
FROM your_table 
GROUP BY NAME) a 
where dt < GETDATE()-2 
+0

こんにちは@Anaghaこのクエリの仕事は、ありがとう – Francis

1

これは、クエリでワイルドな推測ですが、何が欲しいのはGETDATE() functionでなんとかする必要があります。 UTC時間を使用する場合は、GETUTCDATE() functionも使用できます。

編集:ROW_NUMBER() functionを含むように更新されました。

編集2:GETDATE()where句をCTEに置き換えて、過去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 
+0

この作品は、しかし、私は複数のレコードが同じ "名前"と "dt"です どのように出力が唯一の最後のエントリの一意の名前とdtを選択する – Francis

+0

@ andrew-obrien任意の運? – Francis

+0

row_numberを含むように編集されました。 48:: –

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 
関連する問題