Ich verwende MS SQL Server Management Studio. Und ich habe 2 Abfragen, die ich zu einem zusammenführen muss.Erstellen einer komplexen SQL-Abfrage
erste ist (Sie brauchen nicht die Bedeutung davon zu bekommen, gehen Sie einfach zum nächsten Text):
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 BY TestCase_Key Und ich habe diese Abfrage als Ansicht gespeichert MyView und deren Verwendung in der folgenden Abfrage:
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
Jetzt muß ich diese 2 Abfragen fusionieren, also bin ich nicht erlaubte einen Blick in meinem Anwendungsfall zu verwenden. Könnte jemand helfen oder einen Hinweis geben? Ich habe mit "in" -Klausel experimentiert, aber es ist mir nicht gelungen.
Da Ihre zweite Abfrage nur für 1 Zeile suchen ist einfach, Ihre erste Abfrage ändern oben 1. Und fügen Sie in den zusätzlichen Einschränkungen in der where auswählen , und stellen Sie die Reihenfolge von – Mike
Hi als ks viel für Hinweise. Es ist plausibel und ich habe es versucht, aber es hat nicht funktioniert von mir. Könnten Sie sagen, wo ich diese ** row_number() über (Partition von TestCase_Key Reihenfolge von Execution_Date desc) als rn ** setzen sollte, damit es funktioniert? – ekaterina
Nur um zu überprüfen, ob wir in die gleiche Richtung gehen, können Sie in einfachem Englisch sagen, was Sie mit der zweiten Abfrage zurückgeben wollen? Es sieht aus wie du möchtest rn = 1 also das ist die erste Reihe nur aus der Sicht, aber du hast Sortierung in der Ansicht, die dann durch die Reihenfolge von in der Zeile überschrieben wird Nummer – Mike