我想把第一列的5加到最后一列變成48,每次code都不會一樣所以不能寫死
uj5u.com熱心網友回復:
就是要把尾數00的加到尾數99的上邊去uj5u.com熱心網友回復:
不明具體需求。。。要的是什么結果uj5u.com熱心網友回復:
update t
set so = so + (select so from t where substr(code,-2) = '00')
where substr(code, -2) = '99'
uj5u.com熱心網友回復:
CREATE TABLE PAT1 (REGION_CODE VARCHAR2(200),SO VARCHAR2(200))
TRUNCATE TABLE PAT1
INSERT INTO PAT1
SELECT '11010100','5' FROM DUAL
UNION ALL
SELECT '11010101','74' FROM DUAL
UNION ALL
SELECT '11010102','48' FROM DUAL
UNION ALL
SELECT '12010105','6' FROM DUAL
UNION ALL
SELECT '12010106','90' FROM DUAL
UNION ALL
SELECT '12010107','50' FROM DUAL
SELECT * FROM PAT1
/*
REGION_CODE SO
1 11010100 5
2 11010101 74
3 11010102 48
4 12010105 6
5 12010106 90
6 12010107 50
*/
MERGE INTO (SELECT PAT1.* FROM PAT1
WHERE (REGION_CODE,SO) IN
(SELECT REGION_CODE,SO FROM
(SELECT PAT1.*,ROW_NUMBER()OVER(PARTITION BY LPAD(REGION_CODE,6) ORDER BY REGION_CODE DESC ) AS RN FROM PAT1)M1
WHERE M1.RN=1) )T1
USING
( SELECT PAT1.* FROM PAT1
WHERE (REGION_CODE,SO) IN
(SELECT REGION_CODE,SO FROM (SELECT PAT1.*,ROW_NUMBER()OVER(PARTITION BY LPAD(REGION_CODE,6) ORDER BY REGION_CODE ASC ) AS RN FROM PAT1)M1
WHERE M1.RN=1) )T2
ON (LPAD(T1. REGION_CODE,6)= LPAD(T2.REGION_CODE,6))
WHEN MATCHED THEN UPDATE SET T1.SO=T2.SO+T1.SO
SELECT * FROM PAT1
/*
REGION_CODE SO
1 11010100 5
2 11010101 74
3 11010102 53
4 12010105 6
5 12010106 90
6 12010107 56
*/
是這個樣子嗎?
uj5u.com熱心網友回復:
好像沒說清楚,先謝謝上邊兩位回答,我再說下select dct.region_code,
(case
when s0 is null then
0
else
s0
end) s0
from (select t.regpostcode, count(*) as s0
from t_cdp02_t02_zlfx_dstj t
where 1 = 1
and t.tjlx = '2'
and t.jd = '4'
and t.deathdate >= '2017-10-01'
and t.deathdate <= '2017-12-31'
and t.year >= '2017'
and (t.SHSTATE = '2' or t.SHSTATE is null)
and (t.IS_WFS IS NULL OR t.IS_WFS = '2')
and t.is_del = '0'
and substr(t.regpostcode, 1, 6) = '110101'
group by t.regpostcode) tt
right join (select d.*
from t_sys_dct001 d
where substr(d.region_code, 1, 6) = '110101'
order by d.region_code) dct
on tt.regpostcode = dct.region_code
這是原有sql 查詢得到1樓圖片
現在需要把第一行第二列的5,加到最后一行第二列的43中,類似這樣

因為每次條件都不同,不能寫死現在是11010100下次有可能是11010200。11010300。。。總結就是每次查詢的結果位數為00的值加到位數為99的值上
uj5u.com熱心網友回復:
只需decode region_code末兩位,為00的設為99,其他保持原樣,然后聚合sum就行了呀uj5u.com熱心網友回復:
那就還簡單些,加上去,然后region_code取后面那個就是了uj5u.com熱心網友回復:

不好使啊,成這樣了
uj5u.com熱心網友回復:
沒有看懂啊。。加個什么啊
uj5u.com熱心網友回復:
如果是ORACLE的資料庫可以這樣寫update table set so+(select so from table where rownum =1) from table
where rowid=(select max(rowid) from tale) --取得最后一行的條件
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/70826.html
標籤:基礎和管理
上一篇:如題,我現在有這么一個情況,我希望一張表做了,資料增加、修改、洗掉等操作,我們能通過什么方式檢測到這個資料的變化,并把變化的資料添加到另一張表?求大神指點啊
