There are three tables
CreateTableInputItems(ItemIDintPrimary key,Name nvarchar(250))
InsertintoInputItems values(1,'Raw1')
InsertintoInputItems values(2,'Raw2')
InsertintoInputItems values(3,'Raw3')
select*fromInputItems
CreateTableTestItems(ItemNumberintPrimary key,ItemName nvarchar(250),ItemIDint)
InsertintoTestItems values(111,'Test1',1)
InsertintoTestItems values(112,'Test2',2)
InsertintoTestItems values(113,'Test3',3)
InsertintoTestItems values(114,'Raw1',1)
InsertintoTestItems values(115,'Raw2',2)
InsertintoTestItems values(116,'Raw',3)
select*fromTestItems
CreateTableResultItems(ItemNumberintPrimary key,Name nvarchar(250))
select*fromResultItems
We want to base on InputItems table and query on TestItems table and insert query results into ResultItems table
If both InputItems.ItemID = TestItems.ItemID and InputItems.Name = TestItems.ItemName, return TestItems.ItemNumber, InputItems.Name.
If InputItems.ItemID = TestItems.ItemID and InputItems.Name <> TestItems.ItemName, return smallest TestItems.ItemNumer, InputItems.Name.
Results should be
(114,'Raw1',1)
(115,'Raw2',2)
(113,'Raw3',3)
solution1:
1) Insert into ResultItems
select t.ItemNumber, t.Name
from InputItems i inner join TestItems t
where i.ItemID = t.ItemID
2) Declare @Temp table (ItemID int primary key)
Insert into @Temp
select t.ItemID
from InputItems I inner join TestItmes t
where i.ItemID = t.ItemID and having count(t.ItemID) > 1
3) if @Temp table is not empty, using cursor to get each ItemID and query.
We wonder if there is simply way that do not need to use cursor. Thx!
JaneC