[英]Joining two tables and producing results only on one table when there are null values on joining column
就像已经说过的,我们不知道您想要的输出。 但是,通过使用左联接,您应该从配额表中检索记录。
declare @quota table (monthnumber int, qyear int, goal int)
insert into @quota values
(2,2017,5),
(3,2017,10),
(4,2017,8),
(5,2017,8),
(6,2017,10)
declare @sales table (id int, salesdate date)
insert into @sales values
(101,'20170321'),
(102,'20170427'),
(103,'20170223'),
(105,'20170427'),
(108,'20170321'),
(109,null),
(111,null)
select q.*
from @quota as q
left outer join @sales as s
on year(s.salesdate) = q.qyear and
month(s.salesdate) = q.monthnumber
返回
monthnumber qyear goal
--------------------------
2 2017 5
3 2017 10
3 2017 10
4 2017 8
4 2017 8
5 2017 8
6 2017 10
您可以使用功能的月份和年份并按如下所示进行左联接
select * from Quota q left join sales s
on q.year = year(s.saledate) and q.MonthNumber = month(s.saledate)
尽管到目前为止您都没有指定所需的输出或您需要付出的努力,但无论如何我还是做出了尝试,我想这就是您想要的:
SELECT
Q.*,
SalesCount = (SELECT COUNT(*) FROM Sales S
WHERE YEAR(S."Sale Date") = Q.Year AND MONTH(S."Sale Date") = Q.MonthNumber)
FROM Quota Q
结果如下:
MonthNumber Year Goal SalesCount
2 2017 5 1
3 2017 10 2
4 2017 8 2
5 2017 8 0
6 2017 10 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.