这是我的问题:我有一个连接多个表的查询来显示某些订单的详细信息。查询结果在包含列的表中:
order ID | name | count | price | location | date
这是一个医院数据库,我想要做的是添加另一个专栏,说明在给定日期有多少患者在该地点。
还有另一张表显示患者住院 - 我需要计算这些数据。
patient ID | location | dateFrom | dateTo
问题是STAYS
表显示了2个日期 - FROM和TO所以我需要计算在下订单时在给定位置(病房)出现的每个患者。
这是我需要更新的初始查询:
SELECT
AP_ZAMPOZ.ID_TOW AS IDTowaru, --merchandiseID
GMSL_TOW.NAZWA_TOW AS Nazwa, --name
GMSL_TOW.MNOZNIK_SYN AS Mnoznik, --quantity
AP_ZAMPOZ.ZAM_CENA_S AS Cena, --price
AP_ZAMPOZ.ZAM_IL AS Ilosc, --count
AP_ZAMNAG.ZAM_DATE AS DataZam, --date
GMSL_MAG.NAZWA_MAG AS Magazyn, --location
APSL_TOW_PROD.PROD_NAZWA AS Producent, --producer
APSL_TOW_ATC.NAZWA AS Grupa -group
FROM
AP_ZAMPOZ
JOIN
GMSL_TOW ON AP_ZAMPOZ.ID_TOW = GMSL_TOW.ID_TOW
JOIN
AP_ZAMNAG ON AP_ZAMNAG.ZAM_ID_NAG = AP_ZAMPOZ.ZAM_ID_NAG
JOIN
GMSL_MAG ON AP_ZAMNAG.ID_MAG = GMSL_MAG.ID_MAG
JOIN
APSL_TOW ON AP_ZAMPOZ.ID_TOW = APSL_TOW.ID_TOW
LEFT JOIN
APSL_TOW_PROD ON APSL_TOW.ID_PROD = APSL_TOW_PROD.ID_PROD
LEFT JOIN
APSL_TOW_ATC ON APSL_TOW.KOD = APSL_TOW_ATC.KOD
包含stays
的表名为POBYT
,并包含以下相关列:
| ID_POB (ID) | IDK_JOS (location identifier) | DT_OD (date From) | DT_TO (date To)
我希望看到的行应该与我目前的查询中的行数相似+给定地点的患者数量。
任何人都有任何想法如何实现这一目标?我被卡住了......
答案 0 :(得分:0)
通过将子查询添加为另一个SELECT列来解决问题。 继承人的代码
SELECT
.
.
.
APSL_TOW_ATC.NAZWA AS Grupa
(SELECT Count(*)
FROM pobyt
WHERE (TO_DATE( AP_ZAMNAG.ZAM_DATE, 'YY/MM/DD') >= TO_DATE(DT_OD, 'YY-MM-DD') AND (TO_DATE( AP_ZAMNAG.ZAM_DATE, 'YY/MM/DD') <= TO_DATE(DT_DO, 'YY-MM-DD') OR dt_do IS NULL))
AND IDK_JOS = GMSL_MAG.KOD_MAG) AS LiczbaPacjentow --no. of patients at given date
FROM AP_ZAMPOZ
.
.
.
效果很好。