首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL中Distinct数据的distinct值

SQL中Distinct数据的distinct值
EN

Stack Overflow用户
提问于 2012-05-08 14:29:54
回答 2查看 93关注 0票数 0

在我的表中,有时有两个日期和两个值,但我只需要其中一个。有没有办法根据不同的日期选择不同的值?

示例:

代码语言:javascript
复制
DATADATE                ID
2008-06-30 00:00:00.000 12
2008-03-31 00:00:00.000 12
2007-12-31 00:00:00.000 3
2007-12-31 00:00:00.000 12
2007-09-30 00:00:00.000 3
2007-09-30 00:00:00.000 12
2007-06-30 00:00:00.000 3
2007-06-30 00:00:00.000 12
2007-03-31 00:00:00.000 3
2007-03-31 00:00:00.000 12
2006-12-31 00:00:00.000 3
2006-09-30 00:00:00.000 3
2006-06-30 00:00:00.000 3

我需要得到的是:

代码语言:javascript
复制
DATADATE                ID
2008-06-30 00:00:00.000 12
2008-03-31 00:00:00.000 12
2007-12-31 00:00:00.000 12
2007-09-30 00:00:00.000 12
2007-06-30 00:00:00.000 12
2007-03-31 00:00:00.000 12
2006-12-31 00:00:00.000 3
2006-09-30 00:00:00.000 3
2006-06-30 00:00:00.000 3

任何帮助都非常感谢,谢谢。

EN

回答 2

Stack Overflow用户

发布于 2012-05-08 14:31:59

您可以使用group by

代码语言:javascript
复制
select  DATADATE
,       max(IDs)
from    YourTable
group by
        DATADATE
票数 3
EN

Stack Overflow用户

发布于 2012-05-08 14:44:10

如果您使用的是sql server 2005+。然后你可以这样做:

代码语言:javascript
复制
;WITH CTE
AS
(
    SELECT
        ROW_NUMBER() OVER(PARTITION BY ID ORDER BY DATADATE DESC) AS RowNbr,
        Table1.*
    FROM
        Table1
)
SELECT
    *
FROM
    CTE
WHERE
    CTE.RowNbr=1

编辑

在CTE函数中,你可以join或者做任何你不能做的事情来得到你想要的输出。如下所示:

代码语言:javascript
复制
;WITH CTE
AS
(
    SELECT
        ROW_NUMBER() OVER(PARTITION BY Table1.ID ORDER BY Table2.DATADATE DESC) AS RowNbr,
        Table1.*
    FROM
        Table1
        JOIN Table2
            ON Table1.ID = Table2.ID
)
SELECT
    *
FROM
    CTE

WHERE
    CTE.RowNbr=1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10493685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档