Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chuyển đổi biểu thức CASE trong SQL thành cột dẫn xuất trong SSIS

Đạo lý của câu chuyện sau đây là chỉ vì bạn có thể làm điều gì đó trong SSIS, không phải lúc nào cũng là một ý kiến ​​hay.

Trong trường hợp cụ thể, truy vấn này. Sẽ hiệu quả hơn nhiều nếu sử dụng logic sql hiện có để tạo giá trị cuối cùng hơn là sử dụng các cột dẫn xuất hoặc tác vụ tập lệnh trong SSIS (chưa kể đến việc lãng phí bộ nhớ đường ống, CPU, v.v.)

Truy vấn nguồn

Tôi đã sử dụng phần sau làm truy vấn nguồn.

SELECT '50%' AS FixedARMRateReductionLimit, .1 AS PARAM_VAL_TXT
UNION ALL  SELECT 'Weekly PMMS Rate' AS FixedARMRateReductionLimit, .3 AS PARAM_VAL_TXT
UNION ALL  SELECT 'Frack',  .5

Tìm vị trí phần trăm

Xác định xem biểu tượng phần trăm có tồn tại trong cột hay không. Điều này tạo ra một cột có tên là PercentPosition

FINDSTRING(FixedARMRateReductionLimit, "%",1)

Kiểm tra văn bản tỷ lệ

Sẽ là đủ để thực hiện một phép so sánh đơn giản như biểu thức đầu tiên hiển thị nhưng tôi đang gặp vấn đề với nó. Tôi cho rằng đó là chuyển đổi / so sánh chuỗi vấn đề (xem Lưu ý đầu tiên). Thay vì cố gắng lấy giá trị boolean, tôi đã sử dụng chuỗi tìm kiếm để tạo vị trí thứ tự.

FixedARMRateReductionLimit == "'Weekly PMMS Rate"
FINDSTRING(FixedARMRateReductionLimit,"Weekly PMMS Rate",1)

Derive Output

Tận hưởng cách sử dụng kép của Toán tử bậc ba .

(RateTextPosition > 0) ? (PARAM_VAL_TXT) : (PercentPosition == 0) ? .2 : ((DT_NUMERIC, 18,2) SUBSTRING(FixedARMRateReductionLimit,1,PercentPosition - 1))/100

Bạn có thể đã đơn giản hóa một số điều này trong một tác vụ tập lệnh nhưng tôi chỉ thực hiện logic trong nguồn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đăng nhập vào Microsoft SQL Server Lỗi:18456

  2. XPath để tìm nạp giá trị SQL XML

  3. SQL Server (TSQL) - Có thể thực thi các câu lệnh song song không?

  4. Làm cách nào để khắc phục Trạng thái đang chờ phục hồi trong Cơ sở dữ liệu SQL Server?

  5. Ràng buộc khóa ngoại có thể gây ra chu kỳ hoặc nhiều đường dẫn tầng?