Hej! Värt att tillägga är att det kan finnas ex förälder5 som inte har något av barnen kopplade till sig men som ändå skall visas enligt: Har du SQL Server 2005 kan du använda CTE: Hej, tack för svar. Jag sitter på en Oracle 9.7.0.1 och behöver konvertera sql-satsesn så att den är kompatibel med den. Jag kan alltså inte skriva sqlsatsen mot sql server 2005.. Det var värre det, eftersom det här forumet är för just SQL Server.SQL sats
Sitter på ett ganska jobbigt problem. Jag har utformat en sql sats som skriver ut barn till vederbörande förälder. Information i databasen ser ut så här.
Förälder1:
Barn 1 | rev A
Barn 1 | rev B
Förälder2:
Barn 1 | rev B
Barn 1 | rev C
Förälder3:
Barn 1 | rev C
Barn 1 | rev D
Förälder4:
Barn 1 | rev D
Jag har utformat en sql sats som ser ut som följer (tbl_minvy):
Parent| Child | rev | flagga
------------------------------
Förälder 1 | Barn 1 | A | 1 |
Förälder 1 | Barn 1 | B | 1 |
Förälder 1 | Barn 1 | C | 0 |
Förälder 1 | Barn 1 | D | 0 |
Förälder 2 | Barn 1 | A | 0 |
Förälder 2 | Barn 1 | B | 1 |
Förälder 2 | Barn 1 | C | 1 |
Förälder 2 | Barn 1 | D | 0 |
Förälder 3 | Barn 1 | A | 0 |
Förälder 3 | Barn 1 | B | 0 |
Förälder 3 | Barn 1 | C | 1 |
Förälder 3 | Barn 1 | D | 1 |
Förälder 4 | Barn 1 | A | 0 |
Förälder 4 | Barn 1 | B | 0 |
Förälder 4 | Barn 1 | C | 0 |
Förälder 4 | Barn 1 | D | 1 |
Jag vill få nu få ut följande
Parent| Child | rev | flagga
------------------------------
Förälder 1 | Barn 1 | A | 0 |
Förälder 1 | Barn 1 | B | 1 |
Förälder 1 | Barn 1 | C | 0 |
Förälder 1 | Barn 1 | D | 0 |
Förälder 2 | Barn 1 | A | 0 |
Förälder 2 | Barn 1 | B | 0 |
Förälder 2 | Barn 1 | C | 1 |
Förälder 2 | Barn 1 | D | 0 |
Förälder 3 | Barn 1 | A | 0 |
Förälder 3 | Barn 1 | B | 0 |
Förälder 3 | Barn 1 | C | 0 |
Förälder 3 | Barn 1 | D | 1 |
Förälder 4 | Barn 1 | A | 0 |
Förälder 4 | Barn 1 | B | 0 |
Förälder 4 | Barn 1 | C | 0 |
Förälder 4 | Barn 1 | D | 1 |
Jag vill alltså enbart få ett barn av varje förälder, nämligen den senaste enligt revisionsbokstav (ASCII värdet)..
Hur ser sql-satsen ut?
tabellnamnet är tbl_minnyvy, innehållande kolumnerna: Parent, Child, rev, flagga.
stort tack på förhandSv: SQL sats
Förälder5 | barn 1 | A | 0
Förälder5 | barn 1 | B | 0
Förälder5 | barn 1 | C | 0
Förälder5 | barn 1 | D | 0Sv:SQL sats
<code>
;WITH #temp AS
(
SELECT parent, child, MAX(rev) AS rev
FROM tbl_minnyvy
WHERE (flagga = 1)
GROUP BY parent, child
)
SELECT a.parent, a.child, a.rev, CASE WHEN (a.rev = b.rev) THEN 1 ELSE 0 END AS flagga
FROM tbl_minnyvy a
LEFT OUTER JOIN #temp b ON (a.parent = b.parent) AND (a.child = b.child);
</code>
/HåkanSv: SQL sats
Sv:SQL sats
Tyvärr har jag aldrig jobbat mot Oracles databaser,
så jag kan inte hjälpa dig med en eventuell konvertering.
/Håkan