我有一个问题,我无法回答。
了解5月到6月期间发票数量和发票产品总数的差异。
这样做的一种方法是使用子查询:一个用于六月,另一个用于五月,并减去两个查询的结果。由于两个子查询中的每一个都将返回一行,您可以(应该)使用 CROSS JOIN ,这不需要“on”子句,因为您从一个表(即子查询)加入“all”行来自另一个的所有行。 要查找特定日期的月份,您可以使用 MONTH 功能。
这是Erwin文件
这是我到目前为止所得到的。我不知道如何在这种情况下使用CROSS JOIN
select COUNT(*) TotalInv, SUM(ILP.ProductCount) TotalInvoicedProducts
from Invoice I, (select Count(distinct ProductId) ProductCount from InvoiceLine) AS ILP
where MONTH(inv_date) = 5
select COUNT(*) TotalInv, SUM(ILP.ProductCount) TotalInvoicedProducts
from Invoice I, (select Count(distinct ProductId) ProductCount from InvoiceLine) AS ILP
where MONTH(inv_date) = 6
如果你们能提供帮助那就太棒了。
由于
答案 0 :(得分:1)
问题陈述建议您使用以下步骤:
问题在于,在SQL中,第三步并不容易。一种方法是通过交叉连接,产生一个包含来自两个子查询的所有值的行;然后很容易使用SELECT (b - a) ...
来获得您正在寻找的差异。这不是完成第三步的唯一方法,但你肯定没有用。
答案 1 :(得分:0)
你不能用子查询做点什么吗?我还没有对此进行过测试,但是下面的内容应该为您提供4列,发票和产品供May和6月使用。
select (
select 'stuff' a, count(*) as june_invoices, sum(products) as products from invoices
where month = 'june'
) june , (
select 'stuff' a, count(*) as may_invoices, sum(products) as products from invoices
where month = 'may'
) may
where june.a = may.a