어때?
SELECT ParentID, MAX(ChildID) AS ChildID
FROM TableName
GROUP BY ParentID
모든 행 반환 놓친 요구 사항을 수정하는 업데이트 :
테스트 데이터
-- Populate Test Data
CREATE TABLE #table (
ParentID varchar(3) NOT NULL,
ChildID varchar(3) NOT NULL
)
INSERT INTO #table VALUES ('001','001')
INSERT INTO #table VALUES ('001','001')
INSERT INTO #table VALUES ('001','001')
INSERT INTO #table VALUES ('001','002')
INSERT INTO #table VALUES ('001','002')
INSERT INTO #table VALUES ('001','002')
INSERT INTO #table VALUES ('001','003')
INSERT INTO #table VALUES ('001','003')
INSERT INTO #table VALUES ('001','003')
INSERT INTO #table VALUES ('001','003')
INSERT INTO #table VALUES ('001','004')
INSERT INTO #table VALUES ('001','004')
INSERT INTO #table VALUES ('001','005')
INSERT INTO #table VALUES ('001','005')
INSERT INTO #table VALUES ('001','005')
INSERT INTO #table VALUES ('001','005')
결과
를
-- Return Results
DECLARE @ParentID varchar(8)
SET @ParentID = '001'
SELECT T1.ParentID, T1.ChildID
FROM #table T1
JOIN (
SELECT Q1.ParentID, MAX(Q1.ChildID) AS ChildID
FROM #table Q1
GROUP BY ParentID
) ParentChildMax ON ParentChildMax.ParentID = T1.ParentID AND ParentChildMax.ChildID = T1.ChildID
WHERE T1.ParentID = @ParentID
참고 :이 솔루션의 성능은 WHERE 절에 다음 문을 사용하여 허용 된 솔루션 (SQL Server 프로파일 러에 따라)과 동일합니다. 하지만 내 솔루션이 더 깨끗해 보이고 다른 ParentID가 포함되도록 쉽게 확장 할 수 있으므로 필자의 솔루션이 더 마음에 든다. (예 :보고 목적.)
(SELECT MAX(childId) FROM #table WHERE parentId = @ParentID)
지금까지 해보신 것은 무엇입니까? Stack Overflow는 작업을 돕기위한 것이 아니라 작업을 수행하기위한 것이 아닙니다. –
나는 그것을 깨닫는다. 그리고 ive는 대부분의 오후에 노력했다! – MalcomTucker
내 생각 엔 순서가있는 중첩 쿼리가 필요하고 상위 1 개를 선택해야하지만 문법을 올바르게 구할 수없는 것 같습니다. – MalcomTucker