Hej
Jag försöker göra om denna kod från att ha fungerat i Access men nu ska den fungera i MS SQL 2005 istället.
Select a.*, l.lektionDatum,
(Case When cast(Select Count(*)
from narvaro as n where a.anvandarID = n.anvandarID and l.lektionID = n.lektionID))
as decimal(10,2) > 0
Then cast(Select n.narvaroTyp from narvaro as n
where a.anvandarID = n.anvandarID and l.lektionID = n.lektionID) as decimal(10,2)
Else cast(0) as decimal(10,2) End) as narvaro
From anvandare a, lektioner as l, kursmedlemskap as km
Where l.kursID = 184
And km.kursID = 184
And km.anvandarID = a.anvandarID
And l.lektionDatum <= '2006-09-09 01:40:35'
And a.anvandarTyp = 0
Order by a.anvandarFornamn, a.anvandarEfternamn, l.lektionDatum ASC
Får felet incorrect syntax ner keyword Select.
emissionMedlem sedan dec. 19996 721 inlägg cast:en kräver en parentes, och det gör subselecten också.
Och varför casta till decimal? Värdet kan ju aldrig bli något annat än ett heltal.
Frågan borde bli mångfalt effektivare så här:
Select a.*, l.lektionDatum, isnull(n.narvarotyp,0) as narvaro
From anvandare a, lektioner as l, kursmedlemskap as km
left outer join narvaro n on a.anvandarID = n.anvandarID and l.lektionID = n.lektionI
Where l.kursID = 184
And km.kursID = 184
And km.anvandarID = a.anvandarID
And l.lektionDatum <= '2006-09-09 01:40:35'
And a.anvandarTyp = 0
Order by a.anvandarFornamn, a.anvandarEfternamn, l.lektionDatum ASC
...men borde inte anvandare joinas ihop med kursmedlemskap, typ "a.anvandarId=km.anvandarId"?
Det får inte vara flera order by upptäckte jag.
emission skrev:
cast:en kräver en parentes, och det gör subselecten också.
Och varför casta till decimal? Värdet kan ju aldrig bli något annat än ett heltal.
Frågan borde bli mångfalt effektivare så här:
Select a.*, l.lektionDatum, isnull(n.narvarotyp,0) as narvaro
From anvandare a, lektioner as l, kursmedlemskap as km
left outer join narvaro n on a.anvandarID = n.anvandarID and l.lektionID = n.lektionI
Where l.kursID = 184
And km.kursID = 184
And km.anvandarID = a.anvandarID
And l.lektionDatum <= '2006-09-09 01:40:35'
And a.anvandarTyp = 0
Order by a.anvandarFornamn, a.anvandarEfternamn, l.lektionDatum ASC
...men borde inte anvandare joinas ihop med kursmedlemskap, typ "a.anvandarId=km.anvandarId"?
Hej
Jag vill få fram den post i databasen där ett datum ligger närmast dagens datum. I första hand ska den öppna datum som kommer men finns inget sådant så ska den öppna ett tidigare datum.
http://www.webforum.nu/showthread.php?t=141079&highlight=union+lektion
Det funkade i Access men nu kör jag MS SQL
Min lösning verkar ändå ge samma poster som den gör i Access.
Visst decimal är grymt onödigt ska byta det.