我有一个需要执行的一次性操作,并且希望我可以使用 SQL 语句(在 LINQPad 中)来完成。我需要从两个表中获取数据,然后将这些 val 插入另一个表中。具体来说,我需要使用 Customers 表中 Unit/MemberNo/CustNo 的每个唯一组合的数据填充 CustomerCategoryLog 表,并从 MasterUnitsProjSales 表中添加相应的 NewBiz 值。
伪 SQL 是这样的:
// First, need each unique combination of Unit, MemberNo, and CustNo from the Customers table and NewBiz from the MasterUnitsProjSales table
select distinct C.Unit, C.MemberNo, C.CustNo, M.NewBiz
into #holdingTank
from Customers C
join MasterUnitsProjSales M on M.Unit = C.Unit
// Now, I need to insert records into the CustomerCategoryLog table - New or Existing Category/Subcategory
insert into CustomerCategoryLog (Unit, MemberNo, CustNo , Category, Subcategory, BeginDate, ChangedBy, ChangedOn)
VALUES (select Unit, MemberNo, CustNo, if NewBiz = 1: 'Existing'? 'New', if NewBiz = 1: 'Existing'? 'New', Date.Now(), 'Clay Shannon', Date.Now() from #holdingTank)
如果直接上面的古怪pseudoSQL难以理解,这就是我需要的:
如果 NewBiz = 1,则在 Category 和 Subcategory 字段中存储“现有”;否则,在这两个字段中存储“新”。
如果这需要是一个 StoredProc,它需要是什么样的?
另一种选择是在 C# 中编写一个实用程序来检索数据,然后循环遍历结果集,有条件地将“新”或“现有”记录插入到 CustomerCategoryLog 表中。
不过,我认为必须有一种更快的方法来使用 T-SQL 来完成它。