Очистить данные в SQL-запросе через ВПР

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

  • Дата покупки
  • идантификационный номер продукта
  • наименование товара
  • Цена

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

вы можете импортировать файл Excel во временную таблицу и выполнять работу непосредственно в sql ..

scaisEdge 10.04.2018 16:13

Вы можете использовать оператор CASE и указать условие для каждого неверного идентификатора

Aura 10.04.2018 16:18

К сожалению, у меня есть доступ только для чтения к базе данных @scaisEdge

Michiel van Dijk 10.04.2018 16:20

Есть пара сотен таких неправильных идентификаторов @Aurelian, так что это будет своего рода миссия

Michiel van Dijk 10.04.2018 16:20

тогда как можно обновиться .. если у вас есть права только на чтение?

scaisEdge 10.04.2018 16:21

Я не могу обновиться, да и не обязательно на этом этапе. Мне просто было интересно, могу ли я реализовать этот поиск в запросе

Michiel van Dijk 10.04.2018 16:22

Я не понимаю. Как вы можете написать запрос к данным, которых нет в базе данных, но в Excel, в частности к таблице сопоставления неправильных / правильных идентификаторов?

Parfait 10.04.2018 16:33
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
7
130
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если правильные значения в дБ

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)

Другие вопросы по теме