简体   繁体   English

在一个结果表中合并多个选择语句

[英]Combine multiple select statement in one result table

I have two tables, one for sales and another for stock. 我有两张桌子,一张用于销售,另一张用于库存。 I want to select location id, item id, size id and sales qty from sales table, while I want just to select stock qty from stock table for the same location id and size id from sales table, like this: 我想从销售表中选择位置ID,物料ID,尺寸ID和销售数量,而我只想从库存表中选择与销售表中相同的位置ID和尺寸ID的库存数量,如下所示:

Sales table: 销售表:

------------------------------------
| loc_id | item_id | size_id | qty |
------------------------------------
|   5    |  11321  |    1    |  5  |
|   5    |  11321  |    2    |  8  |
|   5    |  11321  |    3    |  4  |
|   5    |  11321  |    2    |  1  |

Stock table: 库存表:

------------------------------------
| loc_id | item_id | size_id | qty |
------------------------------------
|   5    |  11321  |    1    |  3  |
|   5    |  11321  |    2    |  7  |
|   5    |  11321  |    3    |  9  |

So the result after select should be like this: 所以选择后的结果应该是这样的:

------------------------------------------------------
| loc_id | item_id | size_id | sales_qty | stock_qty |
------------------------------------------------------
|   5    |  11321  |    1    |     5     |     3     |
|   5    |  11321  |    2    |     9     |     7     |
|   5    |  11321  |    3    |     4     |     9     |

Here's what I tried to do: 这是我尝试做的事情:

SELECT SUM(T1.qty) AS `salesQty`, SUM(T2.qty) AS `stockQty`, T1.size_id,
T1.loc_id
FROM sales T1
INNER JOIN stock T2 ON T2.item_id = T1.item_id AND T2.size_id = T1.size_id 
WHERE T1.item_id = '11321'
AND T1.size_id IN (1,2,3)
AND T1.loc_id IN (5)
GROUP BY T1.size_id, T1.loc_id

But stock qty always wrong! 但是库存数量总是错误的!

select
   q1.loc_id
  ,q1.item_id
  ,q1.size_id
  ,sum(case when q1.Type='Sales' then q1.Qty else 0 end) as sales_qty
  ,sum(case when q1.Type='Stock' then q1.Qty else 0 end) as stock_qty
from (

select
   T1.loc_id
  ,T1.item_id
  ,T1.size_id
  ,'Sales' as Type
  ,SUM(T1.qty) AS Qty  
from sales T1
group by
   T1.loc_id
  ,T1.item_id
  ,T1.size_id

union all

select
   T2.loc_id
  ,T2.item_id
  ,T2.size_id
  ,'Stock' as Type
  ,SUM(T2.qty) AS Qty  
from stock T2
group by
   T2.loc_id
  ,T2.item_id
  ,T2.size_id) q1

group by
   q1.loc_id
  ,q1.item_id
  ,q1.size_id

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM