У меня есть три разные таблицы:
df_umts_relation
таблица:
|---------------------|------------------|---------------------|------------------|------------------|
| cell_name | n_cell_name | technology | source_ops_num | target_ops_num |
|---------------------|------------------|---------------------|------------------|------------------|
| 121 | 221 | UMTS | 1 | | |
|---------------------|------------------|---------------------|------------------|------------------|
| 122 | 222 | GSM | 2 | | |
|---------------------|------------------|---------------------|------------------|------------------|
| 123 | 223 | UMTS | 3 | | |
|---------------------|------------------|---------------------|------------------|------------------|
| 124 | 224 | GSM | 4 | | |
|---------------------|------------------|---------------------|------------------|------------------|
| 125 | 225 | GSM | 5 | | |
|---------------------|------------------|---------------------|------------------|------------------|
| 126 | 226 | UMTS | 6 | | |
|---------------------|------------------|---------------------|------------------|------------------|
| 127 | 227 | UMTS | 7 | | |
|---------------------|------------------|---------------------|------------------|------------------|
Итак, теперь я хочу обновить target_ops_num
из двух таблиц ниже
df_umts_carrier
таблица, так как эта таблица содержит те столбцы thow, над которыми я хочу работать, а также содержит некоторые целочисленные значения:
|---------------------|------------------|
| opsnum_umts | cell_name_umts |
|---------------------|------------------|
, поскольку у меня есть другая таблица с именем df_gsm_carrier
:
|---------------------|------------------|
| opsnum_gsm | cellname |
|---------------------|------------------|
Так что все, что мне нужно, я хочу обновить [MyNewDatabase].[dbo].[df_umts_relation].[target_ops_num]
СЛУЧАЙ, КОГДА technology
- UMTS
, затем обновить из таблицы df_umts_carrier
ИЛИ technology
- GSM
, затем обновить с df_gsm_carrier
на n_cell_name
= cell_name_umts
и n_cell_name
= cellname
Итак, я попытался создать запрос, так как приведенный ниже работает только с одним условием, и он обновляет только строки, которые UMTS
:
UPDATE [MyNewDatabase].[dbo].[df_umts_relation]
SET [MyNewDatabase].[dbo].[df_umts_relation].[target_ops_num] = [MyNewDatabase].[dbo].[df_umts_carrier].[opsnum_umts]
FROM [MyNewDatabase].[dbo].[df_umts_relation]
INNER JOIN [MyNewDatabase].[dbo].[df_umts_carrier]
ON [n_cell_name] = [cell_name_umts]
и работает нормально, но не обновляет строки, содержащие GSM
...
В другом случае я попытался создать запрос для обработки этого, но он не обновил GSM
расстаться и занять много времени:
UPDATE [MyNewDatabase].[dbo].[df_umts_relation]
SET [MyNewDatabase].[dbo].[df_umts_relation].[target_ops_num] = (CASE WHEN [MyNewDatabase].[dbo].[df_umts_relation].[technology] = 'UMTS'
THEN [MyNewDatabase].[dbo].[df_umts_carrier].[opsnum_umts] ELSE [MyNewDatabase].[dbo].[df_gsm_carrier].[opsnum_gsm] END)
FROM [MyNewDatabase].[dbo].[df_umts_relation]
LEFT JOIN [MyNewDatabase].[dbo].[df_umts_carrier]
ON [n_cell_name] = [cell_name_umts]
LEFT JOIN [MyNewDatabase].[dbo].[df_gsm_carrier]
ON [n_cell_name] = [cell_name]
Значит, у кого-нибудь есть идеи, как решить эту проблему?