SQL Server问题分组
我有下表:SQL Server问题分组,sql,sql-server,sql-server-2005,tsql,group-by,Sql,Sql Server,Sql Server 2005,Tsql,Group By,我有下表: CREATE TABLE #weeks( ProposalLineWeekID INT, StartWeek DATETIME, EndWeek DATETIME, Selected BIT, WeekNumber INT ) 如何获取所有具有重复的WeekNumber条目的ProposalNeweekid值? 比如说 ProposalLineWeekID, WeekNumber ------------------------------ 2
CREATE TABLE #weeks(
ProposalLineWeekID INT,
StartWeek DATETIME,
EndWeek DATETIME,
Selected BIT,
WeekNumber INT
)
如何获取所有具有重复的WeekNumber条目的ProposalNeweekid值?
比如说
ProposalLineWeekID, WeekNumber
------------------------------
2 22
3 6
4 22
我想得到一个新的星期二和星期四以及相应的周数。试试这个:
SELECT ProposalLineWeekID, WeekNumber
FROM #Weeks
WHERE WeekNumber IN
(
SELECT WeekNumber
FROM #weeks
GROUP BY WeekNumber
HAVING COUNT(*) > 1
)
子查询将查找所有重复的周数,外部查询将获取相应的行。尝试以下操作:
SELECT ProposalLineWeekID, WeekNumber
FROM #Weeks
WHERE WeekNumber IN
(
SELECT WeekNumber
FROM #weeks
GROUP BY WeekNumber
HAVING COUNT(*) > 1
)
子查询查找所有重复的周数,外部查询获取相应的行。如果我理解正确,我想这就是您想要的:
SELECT DISTINCT w1.ProposalLineWeekID, w1.WeekNumber
FROM weeks w1
INNER JOIN weeks w2 ON w2.WeekNumber = w1.WeekNumber
AND w2.ProposalLineWeekID <> w1.ProposalLineWeekID
如果我理解正确,我想这就是你想要的:
SELECT DISTINCT w1.ProposalLineWeekID, w1.WeekNumber
FROM weeks w1
INNER JOIN weeks w2 ON w2.WeekNumber = w1.WeekNumber
AND w2.ProposalLineWeekID <> w1.ProposalLineWeekID
+1但如果给定的WeekNumber的重复次数超过,则可能需要将OP要求的WeekNumber添加到SELECT子句中,并与SELECT子句不同twice@Conrad-很好的一点,我本来在那里有一个独特的,然后再三考虑,并删除了它。应该坚持我的第一直觉:+1,但如果给定的周号重复超过1次,您可能希望将OP要求的周号添加到SELECT子句中,并与SELECT子句不同twice@Conrad-很好的一点,我本来在那里有一个独特的,然后再三考虑,并删除了它。应该坚持我在那里的第一直觉:+1,这也会起作用。不确定我或你的解决方案中哪一个在实践中会表现得更好。+1,这也会起作用。但不确定我或你的解决方案中哪一个在实践中表现更好。