假设您的列标题是[人],[项目],[时间],因为这是不是在你原来的职位清楚,我建议像下面。道歉,如果这不是你的确切数据,但它改变了很多次!
样本数据:
CREATE TABLE #sample (
[Person] VARCHAR(10)
, [Project] CHAR(1)
, [Hours] INT
)
INSERT INTO #sample (Person, Project, Hours) VALUES
('Smith', 'X', 10)
, ('Smith', 'Y', 20)
, ('Doe', 'Y', 20)
, ('Brown', 'X', 10)
, ('Doe', 'Z', 30)
, ('Chang', 'X', 10)
, ('Brown', 'Y', 20)
, ('Brown', 'Z', 10)
, ('Woody', 'X', 10)
, ('Woody', 'Y', 20)
, ('Oaks', 'Y', 10)
, ('Oaks', 'Z', 10)
WITH Results AS (
SELECT
b.* -- Get people who are not Smith
, rank() OVER (PARTITION BY b.person ORDER BY b.project) AS Reference -- Work out total number of projects that match
FROM
#sample a
INNER JOIN #sample b ON
a.Hours = b.Hours
AND a.Project = b.Project
AND a.person <> b.person
AND b.person <> 'Smith'
WHERE
a.person = 'Smith' -- Don't duplicate person of interest into results
)
SELECT
Person
, Project
, Hours
FROM
Results
WHERE
Person IN (SELECT person FROM Results WHERE Reference = (SELECT count(DISTINCT project) FROM #sample WHERE Person = 'Smith'))
@MitchWheat编辑,这解开了自己的工作之后,我删除了投票。我不介意缺乏努力,但这是一个很难的问题,并且演示文稿没有显示任何努力。 –
伍迪呢? –
我拿出伍迪。我的意思是早些时候删除该行 – Mmarre