Разделить столбец, но связать с первым значением столбца SQL - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть расчетные номера значений, которые увеличиваются или меняются на несколько последних символов, например, 30200XXX X000 меняется на 30200XXX X010.Они хранятся в таблице в том же столбце, старое число перед старым, для целей отображения, я хочу, чтобы новый номер отображался в правом столбце старого в той же строке.Есть ли способ, которым я могу сделать это в SQL?

Вот мой простой запрос, который я использую для извлечения данных

SELECT DISTINCT COALESCE (LATEST_DCC_NO,")
  , RTRIM(A.PRT_NO)
  , COALESCE(SUBSTR(C.TGT_DC_PRT_NAME,1,20),'')AS "PART NAME"
  , A.SUP_NO
  , B.SUP_NME
  , A.TGT_SHPTO_CDE
  , A.MTC_MODEL
  , A.EFF_BG_DTE
  ,A.EFF_END_DTE
  ,A.PRT_QTY
   FROM XXX.XXA1 A LEFT OUTER JOIN XXX.XRT1 C ON C.TGT_XC_PRT_NO = A.PRT_NO
  , PXX.PUXSM1 B
    WHERE SUBSTR(A.MTX_MDE,1,1) IN('K')
    AND A.SUP_NO = B.SUP_NO
    ORDER BY 2

Это то, что я в настоящее время получаю

OLD/ NEW PRT_NUM
3000TKK Z003
3000TKK Z004
3000XXX X010
3000XXX X020
51000ZA K001
51000ZA K002

Это мой желаемый результат

OLD_PRT_NUM NEW_PRT_NUM
3000TKK Z003    3000TKK Z004
3000XXX X010    3000XXX X020
51000ZA K001    51000ZA K002

1 Ответ

0 голосов
/ 23 февраля 2019

Предполагается, что few last characters - это те, которые находятся после пробела.

with tab (PRT_NUM) as (values
  '3000TKK Z003'
, '3000TKK Z004'
, '3000XXX X010'
, '3000XXX X020'
, '51000ZA K001'
, '51000ZA K002'
)
select 
--  substr(PRT_NUM, 1, 7) || ' ' || min(substr(PRT_NUM, 9)) OLD_PRT_NUM
--, substr(PRT_NUM, 1, 7) || ' ' || max(substr(PRT_NUM, 9)) NEW_PRT_NUM
  substr(PRT_NUM, 1, locate(' ', PRT_NUM)-1) || ' ' || min(substr(PRT_NUM, locate(' ', PRT_NUM)+1)) OLD_PRT_NUM
, substr(PRT_NUM, 1, locate(' ', PRT_NUM)-1) || ' ' || max(substr(PRT_NUM, locate(' ', PRT_NUM)+1)) NEW_PRT_NUM
from tab
group by 
--substr(PRT_NUM, 1, 7)
substr(PRT_NUM, 1, locate(' ', PRT_NUM)-1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...