Как я могу улучшить этот фрагмент кода, потому что это займет так много времени, чтобы более чем 7000 элементов. Следующим шагом будет выполнение этого кода на 300000 строк.
Могу ли я написать другой вариант для ускорения кода?
PROC SQL;
UPDATE GRV_Export_Dummy D
SET 'PAYMENTROLE'n =
(CASE
WHEN (SELECT 'H01'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) = '1' &
(SELECT 'H02'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) = '1' &
(SELECT 'H03'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) = '1' &
(SELECT 'H04'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) = '1' &
(SELECT 'H05'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) = '1' &
(SELECT 'H06'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) = '1'
THEN 'H/'
ELSE ''
END)
||
(CASE
WHEN (SELECT 'H01'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) <> '1' !
(SELECT 'H02'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) <> '1' !
(SELECT 'H03'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) <> '1' !
(SELECT 'H04'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) <> '1' !
(SELECT 'H05'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) <> '1' !
(SELECT 'H06'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) <> '1'
THEN
(CASE WHEN (SELECT 'H01'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) = '1' THEN 'H1/' ELSE '' END) ||
(CASE WHEN (SELECT 'H02'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) = '1' THEN 'H2/' ELSE '' END) ||
(CASE WHEN (SELECT 'H03'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) = '1' THEN 'H3/' ELSE '' END) ||
(CASE WHEN (SELECT 'H04'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) = '1' THEN 'H4/' ELSE '' END) ||
(CASE WHEN (SELECT 'H05'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) = '1' THEN 'H5/' ELSE '' END) ||
(CASE WHEN (SELECT 'H06'n FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR) = '1' THEN 'H6/' ELSE '' END)
ELSE ''
END)
WHERE D.VTITEM IN (SELECT V.VTGONR FROM SERVER.VIEWTABLE V WHERE D.VTITEM = V.VTGONR);
QUIT;
РЕДАКТИРОВАТЬ 01.10.2019 здесь мы идем, некоторые примерыЭто всего лишь небольшой фрагмент кода из моего кода, у меня есть еще такие случаи.
OUTPUT
SAMPLE 1 --> H1/H6
SAMPLE 2 --> H/
SAMPLE 3 --> H3/H4/H5/H6
<table border=1>
<tr>
<td>VTGONR</td>
<td>H01</td>
<td>H02</td>
<td>H03</td>
<td>H04</td>
<td>H05</td>
<td>H06</td>
</tr>
<tr>
<td>6123456</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>6135678</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>5797897</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
</table>