Jeg skal bruge de poster hvor den sidste registrering(Changeddate) er StatusID=6
Jeg har følgende SQL :
SELECT G_PROJ.PROJID, G_PROJ.PLANNEDENDDATE, G_PROJ.TASK_NAME, G_PROJ.DESCR, G_PROJSTATUS.STATUSID,G_PROJSTATUS.CHANGEDDATE AS DATE
FROM G_PROJ INNER JOIN G_PROJSTATUS ON G_PROJ.PROJID = G_PROJSTATUS.FK_PROJECT
WHERE (G_PROJSTATUS.CHANGEDDATE IN (SELECT MAX(G_PROJSTATUS_1.CHANGEDDATE) AS DATE FROM G_PROJ AS G_PROJ_1 INNER JOIN G_PROJSTATUS AS G_PROJSTATUS_1 ON G_PROJ_1.PROJID = G_PROJSTATUS_1.FK_PROJECT GROUP BY G_PROJ_1.PROJID))
GROUP BY G_PROJ.PLANNEDENDDATE, G_PROJ.TASK_NAME, G_PROJ.DESCR, G_PROJSTATUS.STATUSID, G_PROJSTATUS.CHANGEDDATE, G_PROJ.PROJID
HAVING (G_PROJSTATUS.STATUSID = 6)
ORDER BY G_PROJ.PROJID DESC
Dette virker dog ikke, da den medtager alle poster med StatusID=6, også selv om det ikke r den sidste dato (Changeddate)..
Fordi ProjID går igen flere gange, og jeg skal kun bruge de poste med den nyeste dato(Changeddate). Og den skal kun tag dem der har StatusID lig med 6..
ProjID - Sidste post registret - Men kun hvis StatusID = 6
select * from proj P INNER JOIN ( select projid, MAX(date) from proj GROUP BY projid ) AS t1 ON P.projid = t1.projid AND p.ChangeDate = t1.ChangeDate WHERE P.Status = 6
Den tmp table: select projid, MAX(date) from proj GROUP BY projid Tager senest dato og projid og joiner over på sig selv ... og sammenligner projid og dato ... og så ser om den har status id 6..
Det burde virke ... om end jeg ikke lige helt kan gennemskue din struktur. så burde det her give en ide til hvordan du kan løse det.
Problemet er jo at din sidste table ikke har noget unikt ... da du kun har 3 felter ... og det eneste der kan gøre rækken unik er at tage dato med ... så du har id og dato ... som kan vælge staus.
Derfor tror jeg ikke der er mange andre måder at lave det på.
SELECT G_PROJ.PROJID, G_PROJ.TASK_NAME, G_PROJ.DESCR, G_PROJ.PLANNEDENDDATE FROM G_PROJ INNER JOIN G_PROJSTATUS ON G_PROJ.PROJID = G_PROJSTATUS.FK_PROJECT WHERE ((SELECT TOP (1) STATUSID FROM G_PROJSTATUS AS G_PROJSTATUS_1 WHERE (G_PROJ.PROJID = FK_PROJECT) ORDER BY CHANGEDDATE DESC) = 2) GROUP BY G_PROJ.PROJID, G_PROJ.TASK_NAME, G_PROJ.DESCR, G_PROJ.PLANNEDENDDATE ORDER BY G_PROJ.PLANNEDENDDATE DESC
Yes, dit løser det også ... men det andet burde nu også ...
Men alle veje fører til Rom ... næsten da :-)
mvh
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.