我有一個患者活動表,它記錄患者從患者入院到患者出院時的每個活動。下面是表命令疑難解答SQL查詢
Create table activity
( activityid int PRIMARY KEY NOT NULL,
calendarid int
admissionID int,
activitydescription varchar(100),
admitTime datetime,
dischargetime datetime,
foreign key (admissionID) references admission(admissionID)
)
的數據看起來像這樣:
activityID calendarid admissionID activitydescription admitTime dischargeTime
1 100 10 Patient Admitted 1/1/2013 10:15 -1
2 100 10 Activity 1 -1 -1
3 100 10 Activity 2 -1 -1
4 100 10 Patient Discharged -1 1/4/2013 13:15
對於每一個定義calendarID,該組admissionid重複。對於給定的calendarid,admissionsid(s)是唯一的。對於我的分析,我想編寫一個查詢來顯示入場時間,日曆時間,入場時間和出場時間。
select admissionId, calendarid, admitTime=
(select distinct admitTime
from activity a1
where a1.admisionID=a.admissionID and a1.calendarID=a.calendarid),
dischargeTime=
(select distinct dischargeTime
from activity a1
where a1.admisionID=a.admissionID and a1.calendarID=a.calendarid)
from activity a
where calendarid=100
當我單獨分配的數字,它的工作原理,否則就想出了這樣的信息:
子查詢返回多個值。
我在做什麼錯?
當以這種方式使用子查詢必須只返回一個記錄(如明確規定錯誤消息)。看起來好像你在'activityID'上添加'Order By'的'top 1',它會做你想做的。根據測試數據,它看起來像你可以完全避免子查詢,並且將'和activitID = 1'添加到'Where'子句中。 –
其中admitTime!= -1和卸載時間!= -1應該有幫助... –
你可以爲此創建一個sql小提琴嗎?或者可能提供查詢來創建所有必要的表格和一些示例行? –