确保仅使用DISTINCT返回不同的记录

时间:2014-01-14 13:48:08

标签: sql sql-server

鉴于下表:

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

我的问题:我不确定如何使用基于集合的方法构建查询,从而产生以下结果:

  • 对于每个不同的日期,最早的记录 返回date_field_two值

有什么想法吗?

5 个答案:

答案 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