SQL Server – 关于如何组织查询输出的build议,使其可以很好地绘制

我正在为我工​​作的医院提供药物信息。计算抗生素治疗天数(DOT)。 我正在尝试开发一系列查询,这些查询将提供以下信息

  1. DOT按月,DOT按年
  2. DOT按月份,按年份
  3. 按药品逐个月,按年份分。

我有我的星表给了我一个很好的方式这个数据。 我遇到的问题是月到月和年到年我并不总是有相同的单位和相同的药物。 由于这个原因,我很难find一种组织它的方式,以便于绘制。 由于某些月份或年份缺less一些作品,因此不能很好地/简单地绘制出来。 例如,我想要有线图,其中每行是一年,我的X轴是几个月/单位,我的Y轴是DOT。

我有我所有的单位和所有我跟踪的药物维度表。 但我不知何故必须有我的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 

我join我的基线到Dim_Date表,其中Baseline.Dispense_Date = Dim_Date.Date

我希望这个信息有帮助,是有道理的。 任何input,不胜感激。 我有一种感觉,我需要在我的输出查询中纳入一个WHERE子句,在那里我将基线中的所有数据与所有单元/药物进行比较,然后如果它没有find默认输出行为0 – 这将确保每个年份的数据将始终具有相同数量的返回值。

提前致谢。


按照要求,这是我的select声明

  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 

希望有帮助,再次感谢。

只需将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只返回两个表匹配的logging。 请参阅“INNER JOIN”和“OUTER JOIN”之间的区别是什么? 或http://www.w3schools.com/sql/sql_join_full.asp