У меня есть запрос, который извлекает данные о продажах в следующих столбцах:
Однако на заре развития бизнеса некоторые идентификаторы продуктов вводились в неправильном формате. На данный момент у меня есть файл Excel со старыми / неправильными идентификаторами в столбце A и правильными идентификаторами в столбце B.
Мне было интересно, есть ли способ написать запрос, который проверяет, находится ли идентификатор продукта в столбце A списка. Если True, он вернет правильный идентификатор из столбца B, если False, он вернет идентификатор продукта из базы данных.
В Excel я бы сделал это следующим образом: = ЕСЛИОШИБКА (ВПР (ID продукта, ID Fix SheetA: B, 2, FALSE), ID продукта)
Пример данных
# Created On Item IDs Product Name Price
1 26/02/2018 10:51 ABC1 Product Name 1 99
2 26/02/2018 10:22 G7781 Product Name 2 1299
3 26/02/2018 10:23 L5303 Product Name 3 165
4 26/02/2018 10:24 G9576 Product Name 4 1999
5 26/02/2018 10:26 ABC2 Product Name 5 99
6 26/02/2018 10:30 GGG1 Product Name 6 469
7 26/02/2018 10:37 T1283 Product Name 7 299
8 26/02/2018 10:42 L4505 Product Name 8 329
9 26/02/2018 10:48 L3007 Product Name 9 99
Как видите, мы используем буквы L, G или T, за которыми следует номер для наших продуктов. По одной букве на каждую из трех вертикалей. Однако некоторые из них были добавлены с префиксом ABC или GGG в первые дни.
Column A Column B
ABC1 L886
ABC2 L5632
GGG1 G7268
Вот почему у меня есть этот дополнительный файл со старыми / неправильными идентификаторами в столбце A и правильными идентификаторами в столбце B.
В результате я хочу сгруппировать данные о продажах по вертикали (идентификаторы начинаются с L, T или G). Но прежде чем это произойдет, мне нужно выполнить какой-то поиск, чтобы исправить неправильные идентификаторы предметов.
Вы можете использовать оператор CASE и указать условие для каждого неверного идентификатора
К сожалению, у меня есть доступ только для чтения к базе данных @scaisEdge
Есть пара сотен таких неправильных идентификаторов @Aurelian, так что это будет своего рода миссия
тогда как можно обновиться .. если у вас есть права только на чтение?
Я не могу обновиться, да и не обязательно на этом этапе. Мне просто было интересно, могу ли я реализовать этот поиск в запросе
Я не понимаю. Как вы можете написать запрос к данным, которых нет в базе данных, но в Excel, в частности к таблице сопоставления неправильных / правильных идентификаторов?






Если правильные значения в дБ
drop table if exists t,t1;
create table t( id int, itemid varchar(20));
insert into t values
(1 , 'ABC1' ),
(2 , 'G7781'),
(3 , 'L5303'),
(4 , 'G9576'),
(5 , 'ABC2' ),
(6 , 'GGG1' ),
(7 , 'T1283'),
(8 , 'L4505'),
(9 , 'L3007');
create table t1(Columna varchar(20),Columnb varchar(20));
insert into t1 values
( 'ABC1' , 'L886'),
( 'ABC2' , 'L5632'),
( 'GGG1' , 'G7268');
select left(
case when t1.columnb is not null then t1.columnb
else t.itemid
end ,1) vertical,
count(*) obs
from t
left join t1 on t1.columna = t.itemid
group by left(case when t1.columnb is not null then t1.columnb
else t.itemid
end ,1);
+----------+-----+
| vertical | obs |
+----------+-----+
| G | 3 |
| L | 5 |
| T | 1 |
+----------+-----+
3 rows in set (0.00 sec)
вы можете импортировать файл Excel во временную таблицу и выполнять работу непосредственно в sql ..