sql >> データベース >  >> RDS >> Sqlserver

where句で一時列を使用できませんか?

    解決策の 1 つは、結果に where 句を適用して、ステートメント全体のサブセレクトを作成することです

    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
      

    もう 1 つの解決策は、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
      

    または、個々のフィールドの 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. SQL:欠落している月の行を挿入しています

    2. PythonMySQLdbプレースホルダー構文

    3. MySQLのブール値のブール値とtinyint(1)

    4. PostgreSQL9.4-EXCLUDE制約でカスタム演算子を使用する