webForumDet fria alternativet

visa schema, problem

Databaser & SQL

7 svar · 482 visningar · startad av Vinnaren

Medlem sedan sep. 2005833 inlägg
Frågan#1

Har följande:

	SELECT (c.FirstName+' '+c.LastName) AS Name,
	(SELECT TOP 1 (ms.FromTime+'-'+ms.ToTime) FROM Schedule AS ms INNER JOIN [Status] AS s ON s.StatusId = ms.StatusId WHERE ms.ChildId = c.ChildId AND YEAR(ms.Date) = @Year AND DatePart(ww, ms.Date) = @Week AND DATEPART(dw, ms.Date) = 2) AS Monday

	FROM Child AS c

När Monday är null så vill jag istället för att returnera null returnera s.Name, skulle även s.Name vara null ska saknas returneras i Monday.

Hur löser man detta??

Tacksam för all hjälp :stud

Medlem sedan dec. 20025 483 inlägg
#2
(SELECT TOP 1 coalesce(ms.FromTime+'-'+ms.ToTime,coalesce(s.Name,'saknas')) FROM Schedule AS ms INNER JOIN [Status] AS s ON s.StatusId = ms.StatusId WHERE ms.ChildId = c.ChildId AND YEAR(ms.Date) = @Year AND DatePart(ww, ms.Date) = @Week AND DATEPART(dw, ms.Date) = 2) AS Monday
Medlem sedan sep. 2005833 inlägg
#3

tack, men resultatet blir detsamma. Monday innehåller null :r

Medlem sedan dec. 20025 483 inlägg
#4

Iiih! Inlägget är uppdaterat :)

Medlem sedan sep. 2005833 inlägg
#5

tack, men det blir fortfarande null :(

Medlem sedan dec. 20025 483 inlägg
#6

Hm, så här då:

(SELECT TOP 1 case when ms.FromTime is null or ms.ToTime is null then coalesce(s.Name, 'saknas') else ms.FromTime+'-'+ms.ToTime end FROM Schedule AS ms INNER JOIN [Status] AS s ON s.StatusId = ms.StatusId WHERE ms.ChildId = c.ChildId AND YEAR(ms.Date) = @Year AND DatePart(ww, ms.Date) = @Week AND DATEPART(dw, ms.Date) = 2) AS Monday
Medlem sedan dec. 200012 464 inlägg
#7
coalesce((select ...),'saknas')

Om subselecten inte hittar någon post så returnerar den null

Medlem sedan sep. 2005833 inlägg
#8

tack, nu fungerar den :D

253 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)