我正在尝试为NVD3中的堆积条形图设计JSON数据,如果它不存在,则要求密钥为0才能使其正常运行。
我使用以下SQL查询来获取TABLE1的数据
select POSITION, DOE, ID, COUNT(ID) AS COUNTER FROM TABLE1 WHERE
DOE BETWEEN '2014-12-02 00:00:01' AND '2014-12-02 23:59:59' AND TYPE = 'P' AND
POSITION LIKE 'POS%'
TABLE1
POSITION DOE ID COUNTER
POS1 02/12/2014 07:02 12 49
POS2 02/12/2014 07:17 104 17
POS3 02/12/2014 07:07 34 34
POS4 02/12/2014 07:07 21 54
POS5 02/12/2014 07:09 10 51
POS6 02/12/2014 08:42 3 24
POS7 02/12/2014 07:07 10 51
POS8 02/12/2014 07:01 41 46
POS9 02/12/2014 07:08 24 40
我创建了另一个名为TABLE2的表,其列为POSITION和COUNT,并使计数为0。
以下是 TABLE2
的内容POSITION COUNTER
POS1 0
POS2 0
POS3 0
POS4 0
POS5 0
POS6 0
POS7 0
POS8 0
POS9 0
我需要做的是如果位置POS1在TABLE1中不存在,那么从TABLE2显示位置POS1和计数器0。
因此我会得到一张这样的表 -
POSITION DOE ID COUNTER
POS1 0
POS2 02/12/2014 07:17 104 17
POS3 02/12/2014 07:07 34 34
POS4 02/12/2014 07:07 21 54
POS5 02/12/2014 07:09 10 51
POS6 02/12/2014 08:42 3 24
POS7 02/12/2014 07:07 10 51
POS8 02/12/2014 07:01 41 46
POS9 02/12/2014 07:08 24 40
我是SQL新手,所以我甚至不知道这是否可行,我搜索过并搜索过,无法找到解决方案。
非常感谢任何建议。
答案 0 :(得分:1)
我想你想要一个left outer join
:
select coalesce(t1.position, t2.position) as position,
t1.DOE, t1.ID, coalesce(t1.COUNTER, t2.COUNTER) as COUNTER
from table2 t2 left join
(select POSITION, DOE, ID, COUNT(ID) AS COUNTER
FROM TABLE1
WHERE DOE BETWEEN '2014-12-02 00:00:01' AND '2014-12-02 23:59:59' AND TYPE = 'P' AND
POSITION LIKE 'POS%'
) t1
on t2.position = t1.position;