2011-02-02 47 views
1

我有如下表:SQL Server组问号

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

如何获取所有具有重复WeekNumberProposalLineWeekID值? 例如

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

我想获得ProposalLineWeekID 2和4伴随WeekNumber。

回答

4

试试这个:

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

子查询中找出所有重复的星期数和外部查询取出相应行。

+0

+1,这也能发挥作用。不知道我的或你的解决方案哪一个在实践中表现会更好。 – 2011-02-02 18:53:32

2

如果我理解正确的话,我想这是你想要什么:

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

+1,但你可能想要在给定周数重复两次以上的情况下将WeekNumber(OP要求的)和DISTINCT添加到`SELECT`子句 – 2011-02-02 18:49:29