Mysql SQL:如何对两种不同类型的数据使用Union with count
下面的SQL代码概述了我的客户以及他们在2015年12月完成的订单。我想和工会一起做这件事Mysql SQL:如何对两种不同类型的数据使用Union with count,mysql,sql-server,algorithm,Mysql,Sql Server,Algorithm,下面的SQL代码概述了我的客户以及他们在2015年12月完成的订单。我想和工会一起做这件事 select k.klantnr, k.naam, count(b.bestelnr) as 'aantal bestellingen' from klant k LEFT JOIN bestelling b on k.klantnr = b.klantnr and Year (b.besteldatum) = 2015 and Month(b.besteldatum) = 12 group by k
select k.klantnr, k.naam, count(b.bestelnr) as 'aantal bestellingen'
from klant k LEFT JOIN bestelling b on k.klantnr = b.klantnr and Year (b.besteldatum) = 2015 and Month(b.besteldatum) = 12
group by k.klantnr, k.naam
我已经试过了:
select klantnr from klant
union
select klantnr, count(*) from bestelling
where Year(besteldatum) = 2015 and Month(besteldatum) = 12
group by klantnr
显然不起作用,给我这个错误:所有使用UNION、INTERSECT或EXCEPT运算符组合的查询在其目标列表中必须有相同数量的表达式
当我在谷歌上搜索时,我找到了下一个查询:
select tem.klantnr, count(*)
from(select klantnr from klant
union
select klantnr from bestelling where Year(besteldatum) = 2015 and Month(besteldatum) = 12) as tem
group by klantnr
没有提供每位客户的订单数量。您可以通过以下方式完成此操作:
您想要指定月份的所有客户和订单数量吗 您可以使用Ruslan建议的外部应用或左连接
select k.klantnr,coalesce(count(b.klantnr),0) as 'aantal bestellingen'
from klant k
left join bestelling b on k.klantnr = b.klantnr and Year(besteldatum) = 2015 and Month(besteldatum) = 12)
group by klantnr
如果您确实需要UNION,并且可以处理输出,下面是一些SQLi样式的查询:D
select klantnr, null from klant union
select klantnr, count(*) from bestelling
where Year(besteldatum) = 2015
and Month(besteldatum) = 12 group by klantnr
MySQL或SQL Server,您使用的是哪种RDBMS?为什么要使用
UNION
?你想要什么样的产出?(请提供示例数据和预期输出)我认为您不需要联合,而是需要左联合。
select klantnr, null from klant union
select klantnr, count(*) from bestelling
where Year(besteldatum) = 2015
and Month(besteldatum) = 12 group by klantnr