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

Tidak dapat menggunakan kolom sementara di klausa mana?

Salah satu solusinya adalah membuat subselect dari seluruh pernyataan, menerapkan klausa where pada hasilnya

select  *
from    (
          select  cast(de.ApprovalOrder AS VARCHAR(32)) 
                  + cast(de.EntityCode AS VARCHAR(32)) 
                  + isnull(cast(de.DelegationCode AS VARCHAR(32)), '') as 'RowID'
                  , *
          from    workflow.delegation_engine de
        ) de 
where   de.RowID IS NOT NULL

Solusi lain adalah mengulang seluruh klausa dalam klausa WHERE

select  cast(de.ApprovalOrder AS VARCHAR(32)) 
        + cast(de.EntityCode AS VARCHAR(32)) 
        + isnull(cast(de.DelegationCode AS VARCHAR(32)), '') as 'RowID' ,
        *
from    workflow.delegation_engine de
where   cast(de.ApprovalOrder AS VARCHAR(32)) 
        + cast(de.EntityCode AS VARCHAR(32)) 
        + isnull(cast(de.DelegationCode AS VARCHAR(32)), '') IS NOT NULL

Atau Anda dapat menguji setiap bidang individu untuk NULL

select  cast(de.ApprovalOrder AS VARCHAR(32)) 
        + cast(de.EntityCode AS VARCHAR(32)) 
        + isnull(cast(de.DelegationCode AS VARCHAR(32)), '') as 'RowID' ,
        *
from    workflow.delegation_engine de
where   de.ApprovalOrder IS NOT NULL
        AND de.EntityCode IS NOT NULL



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengonversi kunci utama int ke bigint di Sql Server

  2. Cara Menjalankan Pemicu Hanya Saat Kolom Tertentu Diperbarui (SQL Server)

  3. Bandingkan string yang dipisahkan koma dalam SQL

  4. Cara menulis nama atribut ke kueri pemilihan secara dinamis

  5. Cara membuat Batasan Kunci Asing pada Beberapa Kolom di SQL Server - Tutorial SQL Server / TSQL Bagian 67