首页 > 解决方案 > 如何在 SQL 中向表中添加查询?

问题描述

我有 3 张桌子。为简单起见,我将它们更改为这些示例表。

表 1:CorporateActionSmmary

RATE  Quantity  ProductID
--------------------------
56        0        1487
30        0        1871
40        0        8750

table2# ProductMaster

RATEGROSS  ISIN      ProductID
--------------------------
60         JP0001     1487
33         JP0002     1871
45         JP0003     8750

table3# OpenPosition

Quantity        ProductID
-------------------
5              1487
1              1487
5              1487
3              1871
2              1871
4              8750
2              8750
7              8750
3              8750

首先,我需要将表 2 中的 ISIN 添加到表 1 表 1:CorporateActionSmmary

RATE  Quantity  ProductID      ISIN
-------------------------------------
56        0        1487       JP0001 
30        0        1871       JP0002 
40        0        8750       JP0003 

所以,我使用了这段代码

SELECT [dbo].[CorporateActionSummary].*, [dbo].[ProductMaster].[ISIN]
FROM [dbo].[CorporateActionSummary] JOIN [dbo].[ProductMaster] ON CorporateActionSummary.ProductID = ProductMaster.ProductID

现在您可以看到表 1 中缺少数量,因此我必须将表 3 中每个产品 ID 的所有数量加起来并添加到表 1(作为新列或覆盖数量列)

我想我可以通过以下代码得到每个 ProductID 数量的总和,但是如何将它添加到已经有 ISIN 列的 Table1

SELECT SUM(Qantity),ProductID
FROM [dbo].[OpenPositions]

我是SQL超级新手,如果可以的话请详细解释一下,谢谢

我正在使用 Microsoft SQL Server Management Studio

标签: sqlsql-servertsqljoin

解决方案


您可以对数量求和,然后像这样加入您的查询:

SELECT CA.*, PM.[ISIN],CA.Quantity
FROM [dbo].[CorporateActionSummary] CA
JOIN [dbo].[ProductMaster] PM
  ON CA.ProductID = PM.ProductID
JOIN (
SELECT ProductID, SUM(Qantity) Quantity
FROM [dbo].[OpenPositions]
GROUP BY ProductID
) OO
 on OO.ProductID = CA.ProductID

推荐阅读