Nhận xét của tôi ở trên chỉ nhằm mục đích mở ra một vài khả năng mà bạn có thể có trong tay.
PowerQuery là một Trình cắm miễn phí cho Office 2013. Trong Office 2016, nó là một phần của Excel và không còn là một Trình cắm thêm nữa.
Dù sao, bạn có vẻ thích cách tiếp cận sử dụng bảng tạm thời hoặc một biến bảng trên SQL của mình. Do đó, tôi sẽ giải thích kỹ hơn một chút về cách tiếp cận này:
Cuối cùng, bạn sẽ muốn một truy vấn tương tự như sau:
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;
Lưu ý tầm quan trọng của việc set nocount on;
khi bắt đầu truy vấn SQL ở trên. Nếu không có điều đó, nó sẽ không hoạt động!
Khi bạn có truy vấn này, bạn có thể chỉ cần dán nó vào Excel bằng cách sử dụng trình đơn Data
► Get External Data
► From SQL Server
. Trong bước đầu tiên, bạn sẽ nhận được bảng khách hàng và sau đó trong bước thứ hai, tinh chỉnh truy vấn để bao gồm biến bảng như được mô tả ở trên. Đây là một bản tóm tắt ngắn gọn bằng hình ảnh:
Tôi đoán, tại thời điểm này, câu hỏi duy nhất còn lại là:
- Làm cách nào để bạn tạo động câu lệnh SQL ở trên và
- làm cách nào để bạn có được bảng trên trong Excel sau đó được cập nhật bằng câu lệnh SQL được cập nhật này.
Để tạo động SQL ở trên, bạn có thể muốn xem phần sau: Sử dụng một mảng hoặc từ điển như mệnh đề from trong sql trong excel vba
Mới hôm qua, tôi đã trả lời một câu hỏi tương tự trong đó người dùng muốn chuyển nội dung của một trang tính Excel dưới dạng một bảng được tạo động đến SQL Server. Bạn có thể dễ dàng điều chỉnh (hoặc thậm chí sử dụng nó như hiện tại) cho mục đích của mình.
Đối với bước cuối cùng (cập nhật bảng này trong Excel với truy vấn SQL mới này), bạn có thể sử dụng trình ghi macro và thực hiện những gì tôi đã làm trong ảnh chụp màn hình ở trên. Mã được tạo tự động không hơn / kém so với những gì tôi muốn đề xuất cho bạn.
Vì vậy, bạn có nó. Hãy cho tôi biết nếu tôi không đủ rõ ràng hoặc nếu bạn cần thêm chi tiết để hiểu giải pháp này.