我的数据库中有一个表,其中包含productinstances。表名为productinstance
,列id, imei, invoicedate, invoiceNo, serialNr, debitStartDate
。
在这个表中,大约有68个实例有一个doublet(相同的imei
nr)。我想删除双峰。
问题是我在原始记录中需要双重信息,所以在删除双联之前我想将两个记录合并在一起。
所有原始记录invoiceNo
和invoicedate
均为null
,并且所有双重serialno
都有空值。
所以我想从dublet post中将invoiceNo
和invoicedate
的值合并到原始记录中,然后删除doublet。
这可能吗?如果是的话怎么样?
答案 0 :(得分:0)
不太确定下面是你在寻找什么,你最好提供一些exmaples,但如果是,这是实现的方法之一:为派生字段添加一个额外的列。
ALTER TABLE productinstance
ADD ExtraColumn as ISNULL(invoiceNo,'') + ISNULL(CAST(invoicedate) as VARCHAR(50),'')
然后,您可以根据合并列删除任何记录。
答案 1 :(得分:0)
一种简单的方法是使用自连接作为update语句,使用另一个自联接作为delete语句:
UPDATE t0
SET invoiceNo = t1.invoiceNo,
invoicedate = t1.invoicedate
FROM productinstance t0
INNER JOIN productinstance t1 ON t0.imei = t1.imei
WHERE t0.invoiceNo IS NULL
AND t0.invoicedate IS NULL
AND t1.invoiceNo IS NOT NULL
AND t1.invoicedate IS NOT NULL
DELETE t0
FROM productinstance t0
INNER JOIN productinstance t1 ON t0.imei = t1.imei
AND t0.invoiceNo = t1.invoiceNo
AND t0.invoicedate = t1.invoicedate
AND t0.serialno IS NULL