当我选择一些“季节”变量时,我缺少数据。我认为问题在于where子句。我使用:
"where season = @season Or season IS NULL"
这使我可以从表a中获取所有数据,并从表b中匹配特定季节的数据。这在某些季节有效,对其他季节则不然。对于2018赛季,我希望从表a中获得所有行。但是如果我使用2019赛季,它将忽略所有没有空值的记录
我正在使用的选择命令是:
SELECT a.customerid,
a.lname,
a.fname,
b.customerid,
b.mtg1,
b.mtg2,
b.mtg3,
b.mtg4,
(COALESCE(Sum(b.mtg1), 0) + COALESCE(Sum(b.mtg2), 0) + COALESCE(Sum(b.mtg3), 0) + COALESCE(Sum(b.mtg4), 0)) AS total
FROM customer a
LEFT JOIN hours b
ON a.customerid = b.customerid
WHERE b.season = @Season
OR b.season IS NULL
GROUP BY a.customerid,
a.lname,
a.fname,
b.customerid,
b.mtg1,
b.mtg2,
b.mtg3,
b.mtg4,
ORDER BY a.lname
例如,这是我的数据:
这是我获得的2019年数据
但这是我想要的2019年数据
答案 0 :(得分:0)
尝试将WHERE
子句中的ON
子句移动(您可以省略OR
部分):
...
LEFT JOIN hours b
ON a.customerid = b.customerid
AND b.season = @Season
...