How to update column values in table based on values from two tables:
Some time we need to update values in a table based on the join from other table e.g. for a customer calculate and update data values for Order values in from Item Price and Order table.
below is an idea for doing this...
Create Main table to be updated:
SET
ANSI_NULLS ON
GO
SET
QUOTED_IDENTIFIER ON
GO
CREATE
TABLE [dbo].[DimCustOrderValue](
[CustID] [int]
NULL,
[CustomerName] [nchar]
(20) NULL,
[OrderValue] [numeric]
(18, 2) NULL
)
ON [PRIMARY]
GO
--Create other required tables:
SET
ANSI_NULLS ON
GO
SET
QUOTED_IDENTIFIER ON
GO
CREATE
TABLE [dbo].[DimItemOrder](
[OrderId] [int]
NULL,
[ItemId] [int]
NULL,
[CustID] [int]
NULL
[OrderQuantity] [int]
NULL,
GO
SET
ANSI_NULLS ON
GO
SET
QUOTED_IDENTIFIER ON
GO
CREATE
TABLE [dbo].[DimItemPrice](
[ItemID] [int]
NULL,
[ItemName] [nchar]
(20) NULL,
[ItemPrice] [numeric]
(18, 2) NULL
)
ON [PRIMARY]
GO
--Insert data Values into these tables and keep values null for the OrderValue column
--Update Query:
Update
Main --table to be updated
set
Main.OrderValue= Sub.Value --Main.OrderValues is the column to be updated
--Select *
From
dbo.DimCustOrderValue as Main --table to be updated
INNER
JOIN
(
Select
a.CustID,
Sum(isnull(a.OrderQuantity,0)* isnull(b.ItemPrice,0)) as Value
from
dbo.DimItemOrder as a Inner Join
dbo.DimItemPrice as b
On
a.ItemID=b.ItemID
Group
by a.CustID
)
as Sub -- this block is returning calculated value for Order for customers
on
Main.Custid=Sub.CusTID
Comments
Post a Comment