合并SQL Server中的表内容

时间:2015-02-10 10:14:38

标签: sql sql-server left-join

我有两个名为ITEMTransaction的表。我想写一个查询来检索价格的名称,单位,*余额和数量的*余额。

  • 为余额价格=价格 - TPrice
  • 表示余额数量=数量 - TQuantity

这是我表格的结构

ITEM表:

  ID
  Name
  Unit
  Price
  Quantity

TRANSACTION表:

  ID
  Item_ID
  TQuantity
  TPrice

如何查询所有项目,包括TQuantityTPrice没有值的项目?

  ITEM TABLE
  |ID | Name     | Unit | Price  | Quantity |
  | 1 | KeyBoard | pc.  | 1223.00| 4.00     |
  | 2 | Mouse    | pc.  | 1234.00| 3.00     |
  | 3 | Alcohol  | btl. | 900.00 | 6.00     |
  | 4 | Scissors | pc.  | 200.00 | 4.00     |

  TRANSACTION TABLE
  |ID | Item_ID | TQuantity | TPrice |
  | 1 |  1      | 2.00      | 800.00 |
  | 2 |  2      | 1.00      | 500.00 |

  RESULTS TABLE
  |ID | Name        | Unit  | Balance Quantity | Balance Price |
  | 1 | Keyboard    | pc.   | 2.00             | 423.00        |
  | 2 | Mouse       | pc.   | 2.00             | 734.00        |
  | 3 | Alcohol     | btl.  | 6.00             | 900.00        |
  | 4 | Scissors    | pc.   | 4.00             | 200.00        |

1 个答案:

答案 0 :(得分:0)

您可以应用左联接来获取所有项目以及数量和价格,并使用COALESCE来处理NULL值。如果TPRICETQuantity为空,那么您从未提及您想要计算什么,这就是为什么我假设您需要它们的原因。

  SELECT 
       t.Price - COALESCE(tt.TPrice,0) AS balanceprice ,
       t.Quantity - COALESCE(tt.TQuantity,0) AS balancequantity,
       t.Name,
       t.Unit
  FROM 
        [databasename].[schema].[itemtable] t WITH(NOLOCK)
        LEFT JOIN  [databasename].[schema].[transactiontable] tt WITH(NOLOCK)
            ON t.ID = tt.Item_ID