SQL Server - 有关如何组织查询输出的建议,以便可以很好地绘制图形

时间:2015-08-18 19:32:57

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

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

  1. DOT by Month,DOT by Year
  2. 按单位按月,按年度进行DOT
  3. 逐个月按药物分类,按年计算。
  4. 我有我的星表以很好的方式给我这些数据。我遇到的问题是月到月和年复一年我不总是拥有相同的单位和相同的药物。因此,我很难找到一种组织方式,以便可以轻松地绘制它。由于几个月或几年缺少一些碎片,因此不能很好地/轻松地绘制图形。例如,我想要有线图,其中每一行是一年,我的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 
    

    希望有帮助, 再次感谢。

1 个答案:

答案 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