2008-09-04 44 views

Trả lời

1

SQL Server 2000 không chính thức hỗ trợ các chức năng tổng hợp tùy chỉnh. Tuy nhiên, tôi gần đây cần chức năng đó là tốt, và tôi thấy bài viết này khai sáng:
http://weblogs.sqlteam.com/jeffs/articles/1490.aspx

Đó là một chút hack-ish, mặc dù: nó đòi hỏi quyền truy cập vào các sp_OA___ thủ tục mở rộng.

Bản tóm tắt là bạn có thể mô phỏng một chức năng tổng hợp với một loạt các bốn chức năng bao bọc, mỗi trong số đó thực hiện một trong những nhiệm vụ sau đây:

  1. Tạo một đối tượng ActiveX có thể giữ trạng thái trong truy vấn. Gọi số này trước khi chạy truy vấn.
    • Thực hiện tổng hợp thực tế bằng cách sử dụng đối tượng ActiveX.
    • Xóa trạng thái đối tượng ActiveX trên GROUP BY boundries
    • Phá hủy đối tượng. Gọi số này sau khi chạy truy vấn và trong khi xử lý lỗi.

Sau đó bạn có bao gồm các mục 2 3 trong danh sách lựa chọn cho truy vấn của bạn, và mục 2 cũng phải được bọc trong một chức năng tổng hợp không có hiệu lực hiện có như MAX() hoặc MIN(). Bạn cũng có thể sử dụng kỹ thuật này cho các hàm tích lũy để làm những việc như số hàng.

Một số nhận xét cho rằng trình tối ưu hóa có thể cố gắng phủ nhận hiệu ứng tổng hợp bằng cách tối ưu hóa các cuộc gọi trong một số trường hợp, mặc dù tôi cho rằng đó thực sự là một trường hợp rất hiếm. Tuy nhiên, tôi đã tìm thấy câu hỏi này bởi vì tôi đã thực hiện những cảnh báo đó đủ nghiêm túc để tiếp tục tìm kiếm điều gì đó tốt hơn.

Các vấn đề liên quan