18. december 2007 - 16:46Der er
4 kommentarer og 1 løsning
Hjælp til Select query
Hej... Jeg har en tabel som ser ca. sådan ud
@GUID Uniqueidentifier //PrimaryKey @SerialNo nvarchar(30) //Unik for et stykke værktøj / Vare. @HasReturned bit //Indiker om værktøjet/varen er lejet ud.
I denne tabel kan der være flere rækker indeholdende den samme @SerialNo , @SerialNo identificer en unik stykke værktøj. Disse værktøjer lejes ud (@HasReturned = false). Når de kommer hjem igen @HasReturned = true. Et stykke værktøj som er kommet hjem kan lejes ud igen, hvis dette sker indsættes en ny række i tabellen, med samme serialNo.
Der kan altid kun være en række (SerialNo) hvor @HasReturned = true.
Jeg skal nu lave en Select string som henter alle værktøjer ud af tabellen. Men jeg vil kun have 1 række pr. SerialNo. Findes der flere rækker med den samme SerialNo, vil jeg have rækken hvor @HasReturned = false, de andre rækker hvor @HasReturned = true skal den ikke tage med. (kun hvis der kun er 1 række med SerialNo = x, skal den tage rækken med selvom @HasReturned = true)
Håber der er nogen som har en løsning, som ikke indvolver en Cursor, da jeg skal bruge det i en enkelt Select!
SELECT [GUID], SERIALNO, HasReturned FROM Table_1 WHERE HasReturned = 0
UNION ALL
SELECT [GUID], SERIALNO, HasReturned FROM Table_1 WHERE SERIALNO IN ( SELECT SERIALNO FROM Table_1 GROUP BY SERIALNO HAVING MIN(CAST(HasReturned AS INT)) > 0 ) ORDER BY SERIALNO
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.