我正在为我工作的医院提供药物治疗信息。计算抗生素的治疗天数(DOT)。我正在尝试开发一系列查询,它们将为我提供以下信息
我有我的星表以很好的方式给我这些数据。我遇到的问题是月到月和年复一年我不总是拥有相同的单位和相同的药物。因此,我很难找到一种组织方式,以便可以轻松地绘制它。由于几个月或几年缺少一些碎片,因此不能很好地/轻松地绘制图形。例如,我想要有线图,其中每一行是一年,我的X轴是月/单位,我的Y轴是DOT。
我有DIMENSION表格,包括我所有的单位和我跟踪的所有药物。但我不得不让我的STAR表(输出)包含数据库查询未返回的单位和药物。
以下是我正在使用的表格和数据:
DIM_DRUG_NAME
-drug_name_ID, drug_name_long, drug_name_short
FACT_AMS_DOT_Baseline
- location_ID, DOT, drug_name_short, dispense_date
DIM_DATE
-this table contains a number of ways to convert and match dates
-I mainly use Year, Num_Month, Month_Short (Month short is a MMM format)
DIM_LOCATION
-location_ID, Location_Name, Location_Mnemonic
我想在输出中输入的字段是:
Med_Name_Short
Location
Sum(DOT)
MonthShort
Year
我将我的基线加入Dim_Date表,其中Baseline.Dispense_Date = Dim_Date.Date
我希望这些信息有用并且有意义。 任何输入都非常感谢。我有一种感觉,我需要在我的输出查询中包含一个WHERE子句,我将基线中的所有数据与所有单位/药物进行比较,然后如果未找到则将输出行默认为0 - 这将确保每个年度块数据总是具有相同数量的返回值。
提前致谢。
这里要求的是我的Select Statement
SELECT
Baseline.Med_Name_Short ,
Baseline.Location ,
SUM(DOT) AS 'DOT' ,
tdate.MonthShort ,
tDate.Year
INTO STAR_AMS_DOT_By_Drug_By_Unit_MTM
FROM
STAR_AMS_DOT_BASELINE Baseline
INNER JOIN DIM_Date tDate ON Baseline.Dispense_Date = tDate.Date
GROUP BY
Med_Name_Short ,
tDate.Num_Month ,
tdate.MonthShort ,
tDate.Year ,
Baseline.location
ORDER BY
Baseline.Med_Name_Short ,
tDate.Year ,
tDate.Num_Month ,
Baseline.Location
希望有帮助, 再次感谢。
答案 0 :(得分:1)
只需将Inner Join
更改为Full Outer Join
:
FROM
STAR_AMS_DOT_BASELINE Baseline
FULL OUTER JOIN DIM_Date tDate ON Baseline.Dispense_Date = tDate.Date
Inner Join
仅返回两个表匹配的记录。请参阅What is the difference between "INNER JOIN" and "OUTER JOIN"?或http://www.w3schools.com/sql/sql_join_full.asp。