我有这样的表
select id,category from table1
和
select 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.
答案 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中执行此操作,我会执行以下操作:
Month = EOMONTH(mixTable[Date],0)
Month
和Category
列交叉加入新表格。mixTable2 = CROSSJOIN(VALUES(mixTable[Month]),VALUES(mixTable[Category]))
Hours = SUMX(
FILTER(MixTable,
MixTable[Category] = MixTable2[Category] &&
MixTable[Month] = MixTable2[Month]),
MixTable[Hrs])
IF(ISBLANK(...),0,...)
。