我有以下數據。SQL基於創建行的不同行
我需要對數據進行查詢,這樣我纔會得到以下記錄。
我需要基於DateApplication的唯一記錄。像下面一樣。
有人可以告訴我如何做到這一點請在SQL Server 2008中?
我有以下數據。SQL基於創建行的不同行
我需要對數據進行查詢,這樣我纔會得到以下記錄。
我需要基於DateApplication的唯一記錄。像下面一樣。
有人可以告訴我如何做到這一點請在SQL Server 2008中?
你可以試試這個
SELECT Name, Email, DateApplication, Description
FROM (SELECT ROW_NUMBER() OVER (PARTITION BY Name ORDER BY DateApplication DESC) RowNumber,
Name, Email, DateApplication, Description
FROM YourTableName)
WHERE RowNumber = 1
希望這有助於
SELECT Name, email, MAX(DateApplication) As DateApplication,
(SELECT TOP 1 description
FROM tbl As tbl1
where tbl1.Email = tbl.Email AND tbl1.DateApplication = MAX(tbl.DateApplication))
) As description
from tbl
GROUP BY Name, email
這完全不是OP要找的。 「Description」怎麼樣?這就是併發症的來源。 – 2011-12-23 14:11:39
有對皮膚一隻貓的方法不止一種,但通常情況下,你有一個子查詢返回你對每個名字與它的最新日期和加入該回到你的原始表。
使用with語句
;WITH q AS (
SELECT Name, DateApplication = MAX(DateApplication)
FROM YourData
GROUP BY
Name
)
SELECT Name
, Email
, DateApplication
, Description
FROM YourTable yt
INNER JOIN q ON q.Name = yt.Name
AND q.DateApplication = yt.DateApplication
使用一個INNER JOIN
SELECT Name
, Email
, DateApplication
, Description
FROM YourTable yt
INNER JOIN (
SELECT Name, DateApplication = MAX(DateApplication)
FROM YourData
GROUP BY
Name
) q ON q.Name = yt.Name
AND q.DateApplication = yt.DateApplication
注意,在每個例子中我假設組合Name, DateApplication
是獨一無二的。
你可以利用row_number()
功能在這裏:
select
name,
email,
dateapplication,
description
from
(
select *, row_number() over (partition by email order by dateapplication desc) as row_num
from YourTable
)a
where row_num = 1
假設你想要的最後一項,你可以像這樣做:
SELECT t1.Name, t1.Email, t1.DateApplication, t1.Description
FROM tablename t1
WHERE t1.DateApplication =
(SELECT MAX(t2.DateApplication)
FROM tablename t2
WHERE t2.Name = t1.Name AND t2.Email = t1.Email)
謝謝你,作品像魅力 – 2011-12-23 22:48:31