【问题标题】:SQL Server Group BY QuestionSQL Server 按问题分组
【发布时间】:2011-06-20 04:33:00
【问题描述】:

我有下表:

CREATE TABLE #weeks(
  ProposalLineWeekID INT, 
  StartWeek DATETIME, 
  EndWeek DATETIME, 
  Selected BIT, 
  WeekNumber INT
)

如何获取所有具有重复 WeekNumber 条目的 ProposalLineWeekID 值? 比如

ProposalLineWeekID, WeekNumber 
------------------------------
2                   22
3                   6
4                   22

我想获得 ProposalLineWeekID 2 和 4 以及随附的 WeekNumber。

【问题讨论】:

    标签: sql sql-server sql-server-2005 tsql group-by


    【解决方案1】:

    如果我理解正确,我认为这就是你想要的:

    SELECT DISTINCT w1.ProposalLineWeekID, w1.WeekNumber
    FROM weeks w1
    INNER JOIN weeks w2 ON w2.WeekNumber = w1.WeekNumber 
      AND w2.ProposalLineWeekID <> w1.ProposalLineWeekID
    

    【讨论】:

    • @Conrad - 好点,我最初在那里有不同的东西,然后三思而后行并将其删除。应该坚持我的第一直觉:)
    【解决方案2】:

    试试这个:

    SELECT ProposalLineWeekID, WeekNumber
    FROM #Weeks
    WHERE WeekNumber IN
    ( 
        SELECT WeekNumber
        FROM #weeks
        GROUP BY WeekNumber
        HAVING COUNT(*) > 1
    )
    

    子查询查找所有重复的周数,外部查询获取相应的行。

    【讨论】:

    • +1,这也可以。不过,不确定我或您的解决方案中的哪一个在实践中会表现得更好。
    猜你喜欢
    • 2010-10-10
    • 2014-12-26
    • 2020-11-11
    • 2010-10-30
    • 2012-02-19
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    相关资源
    最近更新 更多