MS SQL Server Management Studio를 사용하고 있습니다. 그리고 나는 2 개의 쿼리를 가지고 있는데, 하나의 쿼리로 병합해야합니다.복잡한 SQL 쿼리 작성
먼저 하나 (그냥 다음 텍스트로 건너, 그것의 의미를 얻을 필요가 없습니다)입니다 :
SELECT TOP (100) PERCENT dbo.project.name AS Project_name, Test_Run.documentKey AS TestRun_Key, Test_Run.entitytype, Test_Run.documentKey,
Test_Case.documentKey AS TestCase_Key, document_1.name AS TestPlan_Name, dbo.lookup.name AS TestCase_Release_Status,
Test_Run.testRunStatus AS TestRun_Status, Test_Run.active, dbo.project.id AS Project_ID, dbo.version.versionNumber, Test_Run.executionDate AS Execution_Date,
Test_Run.globalId AS TR_glID, Test_Case.globalId AS TC_glID, Test_Run.createdDate AS TR_Created_Date, Test_Case.id AS TestCase_ID,
Test_Run.id AS TestRun_ID
FROM dbo.[document] AS Test_Run INNER JOIN
dbo.project ON Test_Run.projectId = dbo.project.id INNER JOIN
dbo.[document] AS Test_Case ON Test_Run.testCaseId = Test_Case.id INNER JOIN
dbo.testrunset ON Test_Run.testRunSetId = dbo.testrunset.id INNER JOIN
dbo.[document] ON dbo.testrunset.testCycleId = dbo.[document].id INNER JOIN
dbo.[document] AS document_1 ON dbo.[document].testPlanId = document_1.id INNER JOIN
dbo.version ON Test_Run.testCaseVersionNumber = dbo.version.versionNumber AND Test_Run.testCaseId = dbo.version.originDocumentId INNER JOIN
dbo.documentcustomfieldvalue ON dbo.version.documentId = dbo.documentcustomfieldvalue.documentId INNER JOIN
dbo.lookup ON dbo.documentcustomfieldvalue.textValue = dbo.lookup.id
WHERE (Test_Run.documentTypeId = 55) AND (dbo.documentcustomfieldvalue.fieldId = 216) AND (Test_Run.active = N'T') AND (Test_Case.testCaseStatusId <> 2)
ORDER를 TestCase_Key 에 의해 그리고 내가보기로이 쿼리를 저장 한 MYVIEW 다음과 같은 쿼리를 사용 :
select TestCase_Key, TestRun_Status, Project_Name
from (select TestCase_Key, TestRun_Status, Project_Name,
row_number() over(partition by TestCase_Key order by Execution_Date desc) as rn
from MyView) as T
where rn = 1 and (Project_Name = 'TestProject')
ORDER BY TestRun_Status, TestCase_Key
가 지금은 즉 내 사용 사례에보기를 사용할 수 없습니다하고,이 2 개 개의 쿼리를 병합 할 필요가있다. 누군가 도움을 주거나 힌트를 줄 수 있습니까? 나는 whith "in"절을 실험했지만 성공하지 못했습니다.
두 번째 쿼리는 단지 1 행만 찾고 있으므로 첫 번째 쿼리를 변경하여 최상위 1을 선택하십시오. , 주문을 조정하여 – Mike
안녕하세요 힌트를 위해 많이 ks. 그럴듯한 그것과 Ive는 그것을 시험해 보았다. 그러나 그것은 나로 움직이지 않았다. 이 ** row_number()를 (Execution_Date desc에 의해 TestCase_Key 순서에 의해) rn **으로 붙여 넣기해야 어디에서 작동하는지 알 수 있습니까? – ekaterina
우리가 같은 방향으로 가고 있는지 확인하기 위해 두 번째 쿼리에서 반환하려는 것을 평범한 영어로 말할 수 있습니까? 그것은 rn = 1을 원하는 것처럼 보이기 때문에 뷰의 첫 번째 행이됩니다. 그러나 row_number의 순서에 의해 오버라이드 된 뷰에서 정렬됩니다. – Mike