Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Konversi ekspresi CASE dalam SQL ke kolom turunan di SSIS

Moral dari cerita berikut adalah bahwa hanya karena Anda bisa melakukan sesuatu di SSIS, itu tidak selalu merupakan ide yang baik.

Contoh kasus, kueri ini. Akan jauh lebih efisien untuk menggunakan logika sql yang ada untuk menghasilkan nilai akhir daripada menggunakan kolom turunan atau tugas skrip di SSIS (belum lagi pemborosan memori pipa, CPU, dll)

Kueri sumber

Saya menggunakan yang berikut ini sebagai kueri sumber.

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

Temukan Persen Posisi

Tentukan apakah simbol persentase ada di kolom. Ini membuat kolom bernama PercentPosition

FINDSTRING(FixedARMRateReductionLimit, "%",1)

Periksa teks tarif

Seharusnya cukup untuk melakukan perbandingan sederhana seperti yang ditunjukkan ekspresi pertama tetapi saya mengalami masalah dengannya. Saya menganggap ini adalah konversi/perbandingan string masalah (lihat Catatan pertama). Daripada berkutat dengan mendapatkan nilai boolean, saya menggunakan findstring untuk menghasilkan posisi ordinal.

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

Turunkan Keluaran

Nikmati penggunaan ganda operator Ternary .

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

Anda dapat menyederhanakan sebagian dari ini dalam tugas skrip, tetapi saya hanya akan melakukan logika di sumbernya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sintaks salah di dekat kata kunci 'GROUP' IN SQL

  2. Cara Memasukkan String ke String lain di SQL Server menggunakan STUFF()

  3. Apakah ada cara untuk menambahkan 2 Tabel saat menggunakan pernyataan INSERT di pembuat kueri?

  4. Batasan tabel silang MS SQL Server

  5. SQL server freetexttable parsial kata-kata