Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

MS Excel - обединяване на външни (SQL) данни с локална таблица (лист)

Коментарът ми по-горе имаше само за цел да отвори няколко възможности, които може да имате под ръка.

PowerQuery е безплатна добавка за Office 2013. В Office 2016 тя е част от Excel и вече не е добавка.

Както и да е, изглежда предпочитате подхода да използвате временна таблица или променлива на таблица във вашия SQL. Затова ще разработя малко повече този подход:

В крайна сметка ще искате заявка, подобна на тази:

set nocount on;
declare @tblVAT table
    (
     Country nvarchar(50),
     VAT decimal(9, 7)
    );

insert  into @tblVAT
        (Country, VAT)
values  (N'Germany', 0.19),
        (N'Frence', 0.20),
        (N'Spain', 0.21);


select  tc.Name,
        tc.ID,
        case when tc.Country is null then tv.Country
             else tc.Country
        end as Country,
        tv.VAT
from    dbo.tblCustomers as tc
full outer join @tblVAT as tv
on      tv.Country = tc.Country;

Обърнете внимание на важността на set nocount on; в началото на горната SQL заявка. Без това няма да работи!

След като имате тази заявка, можете просто да я поставите в Excel, като използвате менюто DataGet External DataFrom SQL Server . В първата стъпка ще получите клиентската таблица и след това във втора стъпка ще прецизирате заявката, за да включите променливата на таблицата, както е описано по-горе. Ето кратко визуално резюме:

Предполагам, че на този етап остават само следните въпроси:

  1. Как динамично създавате горния SQL израз и
  2. как получавате горната таблица в Excel и след това актуализирате с този актуализиран SQL оператор.

За да създадете динамично горния SQL, може да искате да разгледате следното:Използване на масив или речник като клауза от в sql в excel vba

Точно вчера отговорих на подобен въпрос, при който потребител искаше да предаде съдържанието на лист в Excel като динамично създадена таблица към SQL Server. Можете лесно да го адаптирате (или дори да го използвате такъв, какъвто е) за вашата цел.

За последната стъпка (актуализиране на тази таблица в Excel с тази нова SQL заявка) можете да използвате записващото устройство за макроси и да направите това, което направих аз на екранната снимка по-горе. Автоматично създаденият код не е нищо повече/по-малко от това, което бих ви предложил.

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2008:Групова промяна на типа данни

  2. Възможно ли е да се добавят езици към sys.syslanguages ​​в SQL Server 2008?

  3. Какво означава машинното обучение за професионалистите по бази данни

  4. Как мога да изпълня .sql от C#?

  5. Създайте временна таблица на базата на друга таблица в SQL Server