2016-03-22 5 views
0

によって一番上の行を取得するために、私はこれを持っています。どのように日付とIdをTSQL

私は3行、それぞれ独自のDOMAINIDのための1つを取得したいし、それは私の多くの試みのことdomainId

一つのための最高の日にする必要があり:

SELECT DISTINCT 
    DomainId, DomainName, 
    Max([Date]), ServerOnline, DatabaseOnline, ServerPerformance, 
    DatabasePerformance, SoldTickets 
FROM 
    DomainDetailDataHistory 
GROUP BY 
    DomainId, DomainName, ServerOnline, DatabaseOnline, 
    ServerPerformance, DatabasePerformance, SoldTickets 

は、私はこれをどのように行うのですか?

答えて

1

現在、GROUP BYステートメントの出力表のすべてがあります。そのため、それぞれの列の固有の値の組み合わせごとに新しい行が戻されます。

DomainId[Date]INNER JOIN次に、テーブルを最初の一時テーブルに関連DomainIdMAX([Date])を入れてみてください。

次のことを試してみてください。

DECLARE @Latest TABLE 
(
    DomainId bigint, 
    [date] datetime2 
) 

INSERT INTO @Latest (DomainId, date) 
SELECT DomainId, MAX(Date) 
FROm DomainDetailDataHistory 
GROUP BY DomainId 


SELECT DISTINCT H.DomainId, DomainName,H.[Date],ServerOnline,DatabaseOnline, ServerPerformance, DatabasePerformance, SoldTickets 
FROM DomainDetailDataHistory H 
INNER JOIN @Latest T ON T.DomainId = H.DomainId AND T.[Date] = H.[Date] 
2

あなたは二重のタグを持っている - これはSQL Serverの次のとおりです。

SELECT * 
FROM (SELECT DomainId, DomainName, [Date], serverOnline, DatabaseOnline, 
       ServerPerformance, DatabasePerformance, SoldTickets, 
       ROW_NUMBER() OVER (PARTITION BY DomainId ORDER BY date DESC) AS rn 
     FROM DomainDetailDataHistory 
    ) AS tt 
WHERE tt.rn = 1 
+0

この私には新しい、前に "上" を使用していませんでした。あなたの答えをありがとう、それは多くのことを聞いていない場合は、ガイドやチュートリアル "オーバー"関数を持っているか? – ThunD3eR

+1

row_number()の検索msdn – Paparazzi

1

これも動作しますが、あなたがSQL Serverの2012+で作業している場合のみ。

;WITH DomainDetailHistoryMax AS 
(
SELECT 
DomainId, DomainName, [Date], serverOnline, DatabaseOnline, 
      ServerPerformance, DatabasePerformance, SoldTickets 
,LEAD([Date]) OVER (PARTITION BY DomainID ORDER BY [Date] ASC) AS cnt 
) 
SELECT 
DomainId, DomainName, [Date], serverOnline, DatabaseOnline, 
      ServerPerformance, DatabasePerformance, SoldTickets 
FROM DomainDetailHistoryMax 
WHERE cnt IS NULL; 

https://msdn.microsoft.com/en-us/library/hh213125.aspx

関連する問題