我有两个名为ITEM
和Transaction
的表。我想写一个查询来检索价格的名称,单位,*余额和数量的*余额。
这是我表格的结构
ITEM
表:
ID
Name
Unit
Price
Quantity
TRANSACTION
表:
ID
Item_ID
TQuantity
TPrice
如何查询所有项目,包括TQuantity
和TPrice
没有值的项目?
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 |
答案 0 :(得分:0)
您可以应用左联接来获取所有项目以及数量和价格,并使用COALESCE
来处理NULL
值。如果TPRICE
和TQuantity
为空,那么您从未提及您想要计算什么,这就是为什么我假设您需要它们的原因。
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