我需要在2个表(a和l)上进行联接(一对多关系)有时我存在有时不存在两个表都有一个日期。当l存在时,我需要对l.Date进行过滤,否则我将对a.Date进行过滤我的问题是,当l.Date为空或MONTH(l.Date)不为空时,如何按MONTH(a.Date)分组]
我收到此错误:
Msg 512,第16级,状态1,第2行子查询返回的值超过1。当子查询遵循=,!=,,> =或将子查询用作表达式时,不允许这样做。“
我的查询:
SELECT month, (SELECT COUNT(numero) FROM WR_AtivTecnicas a FULL OUTER JOIN WR_AtivTecnicasLinhas l ON l.NumeroAtiv = a.Numero WHERE ( (YEAR(l.Data) = null AND YEAR(a.Data) = '2019') OR YEAR(l.Data) = '2019') AND ( (MONTH(l.Data) = null AND MONTH(a.Data) = month) OR MONTH(a.Data) = month) GROUP BY CASE WHEN MONTH(l.Data) = null THEN MONTH(a.Data) ELSE MONTH(l.DATA) END) FROM(VALUES(1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12))[1 to 12](month)
例如,WR_AtivTecnicas可以是:
Numero | Data -------|------------ 1 | 2019-01-01 2 | 2019-02-01 3 | 2019-02-10
和WR_AtivTecnicaLinhas:
NumeroAtiv | Line | Data -----------|------------- 1 | 1 | 2019-01-10 1 | 2 | 2019-01-11 3 | 1 | 2019-02-12 3 | 2 | 2019-02-12 3 | 3 | 2019-03-01
以上示例的期望结果:
Month|Count -----|----- 1 | 2 2 | 3 3 | 1 ... 12 | 0
月= 1至12
谢谢。
我需要在2个表(a和l)上进行联接(1对多的关系)有时l存在有时不存在两个表都有一个Date。当l存在时,我需要对l.Date进行过滤,否则我就对a.Date进行过滤。我的问题...
谢谢大家,在我所有的查询工作完成之后(将“ = nulls”更改为“ IS NULL”,谢谢Larnu)我在这里找到错误: