没有记录或数据时显示列值为0的记录

时间:2017-12-01 17:49:16

标签: sql sql-server powerbi dax

我有这样的表 select id,category from table1select date,id,hrs from table2

通过加入我得到这样的表格让我们称之为 mixTable

   Date     Category     Hrs
 01/23/2017  One         3.5
 01/30/2017  Two         2.3
 01/20/2017  Three       0.6
 01/18/2017  Four        4.3
 02/13/2017  One         6.2
 02/15/2017  Two          4
 02/20/2017  Four        2.2
 03/16/2017  One          1
 03/25/2017  Two         4.3
 03/20/2017  Three       3.6
 03/18/2017  Four        2.5
 04/26/2017  One         2.5
 04/30/2017  Two         3.3
 04/22/2017  Three       2.1

我正在寻找像 mixTable2

这样的输出
Date    Category    Hrs
Jan-17  One         3.5
Jan-17  Two         2.3
Jan-17  Three       0.6
Jan-17  Four        4.3
Feb-17  One         6.2
Feb-17  Two           4
Feb-17  Three         0
Feb-17  Four        2.2
Mar-17  One           1
Mar-17  Two         4.3
Mar-17  Three       3.6
Mar-17  Four        2.5
Apr-17  One         2.5
Apr-17  Two         3.3
Apr-17  Three       2.1
Apr-17  Four          0

正如您可以看到,两个表都有日期,类别小时。在输出表格中,我想将缺少的月份值显示为0,即使它未记录在表格中也是如此。 2月17日 4月17日未记录在主表中。 类别3 4 也不会被记录。

I'm trying to figure out how to show rows in a table that do not have corresponding values in another table.

2 个答案:

答案 0 :(得分:0)

这就是我在TSQL中所做的。

SELECT
CASE WHEN ISNULL(h.hrs, 0) = 0 THEN 'NOT RECORDED'
ELSE w.category END AS [Category]
w.wonum,w.completed_date,ISNULL(h.hrs, 0) AS [hrs]
FROM workorder w 
LEFT JOIN workhrs h (NOLOCK) ON w.wonum=h.wonum

答案 1 :(得分:0)

如果您在Power BI中执行此操作,我会执行以下操作:

  1. 在本月的mixTable上创建一个计算列:
  2. Month = EOMONTH(mixTable[Date],0)
    
    1. MonthCategory列交叉加入新表格。
    2. mixTable2 = CROSSJOIN(VALUES(mixTable[Month]),VALUES(mixTable[Category]))
      
      1. 在此新表上创建一个计算列,以小时数之和。
      2. Hours = SUMX(
                    FILTER(MixTable,
                        MixTable[Category] = MixTable2[Category] &&
                        MixTable[Month] = MixTable2[Month]),
                    MixTable[Hrs])
        
        1. 如果您想要零而不是空格,请在IF(ISBLANK(...),0,...)
        2. 中包含上述内容