如何在sql developer中添加具有相同id的结果?
Oracle SQL开发人员: 我有一个数据集,有些ID不是唯一的。其中一些ID具有取消日期。我想将取消日期添加到具有相同ID的行中。 例如: 我想填补空白,当在同一产品有一个取消日期 应该是这样的:如何在sql developer中添加具有相同id的结果?,sql,oracle,Sql,Oracle,Oracle SQL开发人员: 我有一个数据集,有些ID不是唯一的。其中一些ID具有取消日期。我想将取消日期添加到具有相同ID的行中。 例如: 我想填补空白,当在同一产品有一个取消日期 应该是这样的: product ; cancellation; cancelled; a null 23-01-2019 b 12-01-2019 12-01-2019 c null null d
product ; cancellation; cancelled;
a null 23-01-2019
b 12-01-2019 12-01-2019
c null null
d null null
a 23-01-2019 23-01-2019
b null 12-01-2019
ALTER TABLE your_first_table
ADD cancelled DATE;
CREATE TABLE your_temp_table(PRODUCT, CANCELLATION)
AS
SELECT PRODUCT, CANCELLATION
FROM your_first_table ;
UPDATE your_first_table A
SET cancelled = (SELECT CANCELATION
FROM your_temp_table B
WHERE B.PRODUCT = A.PRODUCT
AND A.CANCELLATION IS NOT NULL);
我不知道,请帮帮我。你可以试试这个:
SELECT prod.product,
prod.cancellation,
canc.cancellation AS cancelled
FROM my_table prod
LEFT OUTER JOIN my_table canc
ON prod.product = canc.product
AND canc.cancellation IS NOT NULL;
您可以在
选择中使用窗口功能:
select t.*, max(cancellation) over (partition by product) as cancelled
from t;
如果要在查询中设置值,可以使用update
:
update t
set cancelled = (select max(t2.cancellation)
from t t2
where t2.product = t.product
)
where exists (select 1
from t t2
where t2.product = t.product and
t2.cancellation is not null
);
如果我理解正确,我会这样做:
product ; cancellation; cancelled;
a null 23-01-2019
b 12-01-2019 12-01-2019
c null null
d null null
a 23-01-2019 23-01-2019
b null 12-01-2019
ALTER TABLE your_first_table
ADD cancelled DATE;
CREATE TABLE your_temp_table(PRODUCT, CANCELLATION)
AS
SELECT PRODUCT, CANCELLATION
FROM your_first_table ;
UPDATE your_first_table A
SET cancelled = (SELECT CANCELATION
FROM your_temp_table B
WHERE B.PRODUCT = A.PRODUCT
AND A.CANCELLATION IS NOT NULL);
您可以使用MERGE
语句:
MERGE INTO TABLE2 T2
USING (SELECT PRODUCT, CANCELLATION FROM TABLE1
WHERE CANCELLATION IS NOT NULL) T1
ON (T2.PRODUCT = T1.PRODUCT)
WHEN MATCHED THEN
UPDATE SET
T2.CANCELLED = T1.CANCELLATION;
干杯