Как установить значение ячейки, используя результат параметризованного запроса SQL с помощью Power Query?

2721
Juliano Nunes Silva Oliveira

У меня есть лист со столбцами A, B и C. Затем мне нужно выполнить запрос на моем SQL Server, используя значения из столбцов A и B, чтобы найти значение, которое следует поместить в столбец C.

Я создал запрос следующим образом:

SELECT * FROM Tablename

Затем добавлены этапы фильтрации с учетом двух параметров, которые я создал в Power Query Editor.

Теперь, как я могу подключить этот существующий рабочий лист к запросу, передавая значения ячеек в качестве параметров, чтобы получить результат (одна строка)?

ОБНОВИТЬ

Добавление дополнительной информации ...

Моя рабочая таблица выглядит так:

Column A | Column B | Column C 1 | 223 | ? 2 | 545 | ? 8 | 542 | ?  

Тогда в моей таблице базы данных есть все эти 3 столбца (наряду с несколькими другими, которые не важны), мне нужно сравнить столбцы A и B на рабочем листе с эквивалентными столбцами A и B в таблице базы данных, чтобы вернуть значение столбца C из база данных (без импорта всей таблицы в новый лист).

1

3 ответа на вопрос

0
Rajesh S

Поскольку вы не указали, подключены ли вы к МОЕМУ SQL или нет, поэтому я хотел бы показать вам самый простой процесс экспорта файла Excel в MY Sql.

Выполните следующие действия, чтобы экспортировать данные листа Excel в таблицу MySQL.

  1. Выберите вкладку «Данные», нажмите «MySQL для Excel», чтобы открыть панель задач «MySQL для Excel».

  2. В «Открыть соединение MySQL» дважды щелкните существующее локальное или удаленное соединение, чтобы отобразить доступные схемы базы данных.

  3. Выберите схему и нажмите Далее, чтобы отобразить все объекты базы данных.

  4. Затем выберите ячейки на листе для экспорта и нажмите «Экспорт данных Excel в новую таблицу».

  5. Теперь укажите, должна ли первая строка использоваться в качестве имени столбца.

  6. Затем введите уникальное имя таблицы и выберите параметры сортировки для использования в новой таблице.

  7. Выберите столбец Первичный ключ.

  8. Примените соответствующие параметры для столбцов.

  9. Наконец, нажмите «Экспорт данных», чтобы создать новую таблицу с данными.

Другой метод - ODBC для создания DSN.

Примечание ,,, Select * из TableName, тянет все записи из таблицы для всех столбцов.

Поскольку вы боретесь с параметром так, для успешного запроса сначала нужно объявить параметр.

Вот один пример.

DECLARE @Parameter VARCHAR(20) SET @Parameter = 'Amit'  SELECT * FROM Table WHERE Name = @Parameter 

Надеюсь, это поможет вам.

Это не то, что мне нужно. Я не хочу импортировать данные листа в базу данных SQL Server, мне нужно запросить таблицу базы данных, чтобы добавить некоторые данные в мой лист, но используя существующие данные листа в качестве параметра. Столбцы A и B содержат значения параметров, а столбец C должен быть обновлен в соответствии с результатом запроса SQL Server. Juliano Nunes Silva Oliveira 6 лет назад 0
@JulianoNunesSilvaOliveira, на самом деле я предложил 2 разных метода. Первый - экспортировать лист Excel в SQL Server для дальнейших действий, а второй - как создать параметр при выполнении запроса. НО твоя проблема в другом. На самом деле вы хотите вставить запрашиваемые данные из SQL Server в EXCEL. И это просто ЭКСПОРТ в EXCEL. Rajesh S 6 лет назад 0
Проверьте мой недавний ответ, там я предлагаю 2 метода, один из которых - экспорт в Excel, а второй - как вставить запрашиваемые данные в лист Excel в виде файла CSV. Rajesh S 6 лет назад 0
Извините, если я не понимаю, но у меня не может быть фиксированного значения для параметров, мне нужно выполнить запрос, используя каждую строку существующего рабочего листа, и обновить столбец C соответствующей строки. Juliano Nunes Silva Oliveira 6 лет назад 0
@JulianoNunesSilvaOliveira, вы пробовали мое ПОСЛЕДНЕЕ РЕШЕНИЕ, я опубликовал только вчера ,! Rajesh S 6 лет назад 0
Ваше решение потребует выполнения этого запроса с использованием такого инструмента, как SSMS, оно использует фиксированное значение в качестве критерия и не возвращает данные в правильном положении (столбец C существующего рабочего листа, в соответствующей строке значений фильтра). какие области столбцы A и B) без дополнительных шагов. Я знаю, что могу сделать это, используя VBA и используя функции импорта / экспорта из SSMS, но мой вопрос связан с редактором Excel и Power Query, на который указывает тег вопроса. Juliano Nunes Silva Oliveira 6 лет назад 0
@JulianoNunesSilvaOliveira ,, ты даже раньше писал ,,, тебе нужен Power Query, чтобы принять участие ?? Rajesh S 6 лет назад 0
не поймите меня неправильно, но это вопрос тегов, и я упомянул редактор запросов. Я действительно пропустил "власть" в тексте вопроса, но я добавлю. Спасибо, что нашли время. Juliano Nunes Silva Oliveira 6 лет назад 0
0
pat2015

Исходя из того, что я лучше всего понимаю ваш вопрос, кажется, что вы успешно создали параметризованный запрос и, скорее всего, вы поставили? для значения поля, и вы можете получить результаты, передавая значения в него.

Теперь вам нужно отнести значение ячейки к значениям параметра.

Попробуйте эти шаги.

  1. Выберите таблицу. Перейдите на вкладку «Дизайн» и выберите «Свойства».
  2. Нажмите кнопку рядом с именем подключения.
  3. Перейдите на вкладку «Определение». Если вы правильно создали параметризованный запрос, кнопка Parameter должна быть включена для вас.
  4. Для указанных параметров теперь выберите переключатель «Получить значение из следующей ячейки» и включите функцию «Автоматически обновлять» при изменении значения ячейки.
  5. Нажмите OK во всех диалоговых окнах и выйдите.

Теперь в идеале запрос должен выполняться каждый раз, когда вы обновляете значения в ячейках таблицы Excel.

Смотрите ниже пример, основанный на базе данных MS Access. Я надеюсь, что шаги должны быть очень похожи на SQL Server тоже. Исследуйте и экспериментируйте дальше. Надеюсь это поможет.

Почти там, @ pat2015. Проблема состоит в том, что в моей рабочей таблице есть несколько строк для этих столбцов A и B, поэтому я не могу использовать фиксированную строку в значении параметра. Juliano Nunes Silva Oliveira 6 лет назад 0
@JulianoNunesSilvaOliveira ,, Пэт предложил Access Query, но вы написали SQL Server ,, !! Rajesh S 6 лет назад 0
Ты прав @RajeshS. Я не видел, что он использовал Access. Juliano Nunes Silva Oliveira 6 лет назад 0
0
Rajesh S

Ниже представлен лучший ответ, который я могу вам предложить, после того, что я понял, прочитав комментарий к моему Первому ответу и ОП (Вопрос, опубликованный вами), снова.

Способ 1. Экспортируйте данные SQL-запроса в Excel.

Запрашивая данные, в окне результатов просто щелкните верхнюю левую ячейку, чтобы выделить записи, затем щелкните правой кнопкой мыши верхнюю левую ячейку и нажмите «Сохранить результаты как».

Вы можете выбрать лучший тип файла для экспорта, это файл CSV.

Другими словами, экспортируйте данные SQL-запросов в Excel.

Способ 2: создать оператор запроса для экспорта в Excel.

INSERT INTO OPENROWSET  ('Microsoft.Jet.OLEDB.4.0',  'Excel 9.0;Database=D:\Sales.xlsx;','SELECT * FROM Sales where Code = 1000') 

Другое написано ниже. Запрос непосредственно помещает данные в Excel в виде файла CSV.

SELECT * FROM Sales where Code = 1000 INTO OUTFILE 'D:/Sales.CSV' FIELDS TERMINATED BY ','  ENCLOSED BY '"' LINES TERMINATED BY '\n'; 

Примечание: измените файл, имя поля, а также критерии в соответствии с вашей структурой базы данных.

Я верю, что это поможет вам.

Похожие вопросы