Очистить данные в SQL Query через VLOOKUP

0

У меня есть запрос, который выводит данные о продажах в следующих столбцах:

  • Дата покупки
  • Код товара
  • наименование товара
  • Цена

Тем не менее, в первые дни бизнеса некоторые идентификаторы продуктов были введены в неправильном формате. На данный момент у меня есть файл Excel со старыми/неправильными идентификаторами в столбце A и правильными идентификаторами в столбце B.

Мне было интересно, есть ли способ написать запрос, который выглядит, если идентификатор продукта находится в столбце A списка. Если True вернет правильный идентификатор из столбца B, если False, он вернет идентификатор продукта из базы данных.

В Excel я бы сделал это следующим образом: = IFERROR (VLOOKUP (идентификатор продукта, идентификатор Fix SheetA: B, 2, FALSE), идентификатор продукта)

Пример данных

#   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). Но прежде чем это произойдет, мне нужно сделать какой-то поиск, чтобы исправить неверные идентификаторы элементов.

  • 0
    Вы можете импортировать файл Excel во временную таблицу и выполнить работу непосредственно в SQL.
  • 0
    Вы можете использовать оператор CASE и указать условие для каждого неверного идентификатора.
Показать ещё 5 комментариев
Теги:
vlookup
lookup

1 ответ

1
Лучший ответ

Если правильные значения находятся в db

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)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню