【问题标题】:SQL Server - Suggestions on how to Organize Query Output so that it can be Graphed NicelySQL Server - 关于如何组织查询输出以便可以很好地绘制图表的建议
【发布时间】:2015-08-18 19:32:57
【问题描述】:

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

  1. DOT 按月,DOT 按年
  2. DOT 按月、按年按单位
  3. DOT by Drug by Unit by Month, by Year.

我的星表以一种很好的方式为我提供了这些数据。我遇到的问题是逐月和逐年我并不总是拥有相同的单位和相同的药物。因此,我很难找到一种组织它的方法,以便可以轻松地绘制图表。由于几个月或几年丢失了一些部分,它不能很好地/容易地绘制图表。例如,我想要一个折线图,其中每条线是年,我的 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 - 这将确保每个 Year-block的数据将始终具有相同数量的返回值。

提前致谢。


这里的要求是我的选择声明

 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 

希望对您有所帮助, 再次感谢。

【问题讨论】:

  • 显示您的Select 声明。你需要做一个outer Join
  • 选择语句添加到原始块中。

标签: sql sql-server excel tsql excel-2010


【解决方案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

【讨论】:

  • 另外顺便说一句:我发现如果我获取这些数据,将其转储到 Excel 并在其上进行数据透视,然后在图表上显示图表实际上将具有与相应数据透视表相同的过滤器,这可笑强大的和我正在努力的方向。再次感谢。
猜你喜欢
  • 2012-08-11
  • 1970-01-01
  • 2017-09-06
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多