我正在尝试计算并从表table_two
中获得列count
的和。我试图通过left join
函数获取列的和。但是它不能正常工作,我得到的列的和行的次数存在于table_two
中。
我在left join
的union表中不是很好,你能帮助我如何在我的代码中使用union函数吗。我展示了这个StackOverflow上的多个线程,但相信我,它很难理解,而且非常大。这就是为什么我在这里做了一个小桌子的帮助和容易理解。
先生,请帮我别把它标为重复和关闭的。我尝试了过去的1个星期,但没有代码工作。
我在试密码是-
SELECT *, SUM(table_two.count) AS totalQTY, SUM(table_one.qty) AS totalReqQty
FROM table_one
LEFT JOIN table_two
ON table_one product_key = product_code
LEFT JOIN product_table
ON table_two.product_code = product_table.product_ids
table_one
| ID | product_key | insert_date | qty
|------|------------------|--------------|------
| 1 | 123456789 | 2021-02-01 | 150
------------------------------------------------
table_two
| ID | product_code | add_date | count
|------|-------------------|--------------|-------
| 1 | 123456789 | 2021-02-02 | 10
| 2 | 123456789 | 2021-02-03 | 20
| 3 | 123456789 | 2021-02-04 | 5
--------------------------------------------------
PRODUCT_TABLE
| ID | product_ids | product_name
|------|-------------------|----------------------
| 1 | 123456789 | XYZ
--------------------------------------------------
需要输出:
| ID | product_key | product_name | qty | count |
|------|-------------------|---------------------------------
| 1 | 123456789 | XYZ | 150 | 35 |
-------------------------------------------------------------
您还没有对正在使用的数据库进行标记,但是,从每个数据库获取聚合的一种方法是使用apply
。
我还建议您修改ProductId命名约定中的不一致之处,您将其称为PRODUCT_CODE
和PRODUCT_KEY
和PRODUCT_IDS
。决定怎么称呼它并保持一致会让别人容易理解得多。
select p.product_ids as product_key, p.product_name, coalesce(q.Qty,0) totalQty, coalesce(c.[count],0) [Count]
from product_table p
outer apply (
select sum(qty) Qty
from table_one t1
where t1.product_key=p.product_ids
group by t1.product_key
)q
outer apply (
select Sum(count) [count]
from table_two t2
where t2.product_code=p.product_ids
group by t2.product_code
)c
另一种方法是简单地连接表,并按每个产品的列分组,然后聚合数量。
select p.product_ids as product_key, p.product_name, Coalesce(Sum(q.Qty),0) TotalQty, Coalesce(Sum(c.[count]),0) [count]
from product_table p
left join table_one t1 on t1.product_key=p.product_ids
left join table_two t2 on t2.product_code=p.product_ids
group by p.product_ids, p.product_name
您向我们显示的查询不起作用。
如果您希望通过使用聚合函数(如SUM())来汇总/滚动/您的数据,最好是在不使用这些函数的情况下运行查询。例如:
SELECT *
FROM table_one
LEFT JOIN table_two
ON table_one.product_key = table_two.product_code
LEFT JOIN product_table
ON table_two.product_code = product_table.product_ids
你得到这个结果。请注意,它有三行,数量150
显示在所有三行中。