鉴于下表:
date_field_one date_field_two arbitrary_value
---------------- ---------------- -----------------
1/1/11 1/3/11 cheese
1/1/11 1/4/11 the color orange
2/2/11 2/3/11 1
2/2/11 2/4/11 2
我的问题:我不确定如何使用基于集合的方法构建查询,从而产生以下结果:
有什么想法吗?
答案 0 :(得分:2)
修改新回复! M.Ali发布的解决方案可能最适合您的特定情况,因为它将确保您只从基础数据中获得一行结果,即使您的答案中存在多个候选行(例如,date_field_one,date_field_two组合并不明显)。以下将在not-distinct场景中按date_field_one,date_field_two组合返回多个结果:
SELECT t.date_field_one, t.date_field_two, t.arbitrary_value
FROM ( SELECT date_field_one,
date_field_two = MIN( date_field_two )
FROM dbo.[table]
GROUP BY date_field_one ) dl
LEFT JOIN dbo.[table] t
ON dl.date_field_one = t.date_field_one
AND dl.date_field_two = t.date_field_two;
答案 1 :(得分:2)
;WITH CTE
AS
(
SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY date_field_one ORDER BY date_field_two
ASC)
FROM TableName
)
SELECT * FROM CTE
WHERE rn = 1
答案 2 :(得分:1)
这样的事情:
select date_field_one, min(date_field_two)
from yourtable
group by date_field_one
答案 3 :(得分:0)
试试最新的............
select date_field_one ,min(date_field_two) date_field_two
from table group by date_field_one
答案 4 :(得分:0)
select date_field_one, min(date_fileld_two)
from table
group by date_field_one