首页 文章

使用条件标准创建临时表

提问于
浏览
0

我试图从另一个表创建一个临时表,我根据一组标准选择行 . 许多不同的标准都在“where” - 陈述中 . 主要根据来自两个不同列(“Värde”和“Adminkontroll”)的标准来选择行 . 前三个条件是我不希望Adminkontroll列中的任何行具有特定文本 . 最后三个条件是,如果行在Adminkontroll列中有某个文本,我只想选择具有某个值低于特定阈值水平或高于和低于特定阈值水平的那些 . 我的代码看起来像这样:

select * into temp1 
    from [StatistikinlamningDataSKL].[dbo].[SKL_AdminKontroll_result] E
    where
            E.Adminkontroll <> 'SKL_admin_KN_annan_AID'
        and E.Adminkontroll <> 'SKL_admin_KN_lararloner'
        and E.Adminkontroll <> 'SKL_admin_KN_specialitet'
        and E.Värde < 90 if E.Adminkontroll IN 'SKL_admin_KN_ldatum'
        and (E.Värde < 50 and E.Värde > 95) if E.Adminkontroll IN 'SKL_admin_KN_tillsvidare'
        and (E.Värde < 5 and E.Värde > 25)if E.Adminkontroll IN 'SKL_admin_KN_timlon'


    select * into temp1

有没有人对如何编码它有任何想法,这是有效的?我尝试过“cast(case ..)”,但是当我需要这个特定的标准时,我不知道如何编写代码 .

提前谢谢了,

最诚挚的问候,Hannes

2 回答

  • 0

    这可能是组织规则和避免编码错误的更简洁方法 .

    select * into temp1 
        from [StatistikinlamningDataSKL].[dbo].[SKL_AdminKontroll_result] E
        where 1 = case
          when E.Adminkontroll = 'SKL_admin_KN_annan_AID'                                     then 0
          when E.Adminkontroll = 'SKL_admin_KN_lararloner'                                    then 0
          when E.Adminkontroll = 'SKL_admin_KN_specialitet'                                   then 0
          when E.Adminkontroll = 'SKL_admin_KN_ldatum'      AND E.Värde < 90                  then 1
          when E.Adminkontroll = 'SKL_admin_KN_tillsvidare' AND E.Värde < 50 AND E.Värde > 95 then 1
          when E.Adminkontroll = 'SKL_admin_KN_timlon'      AND E.Värde < 5  AND E.Värde > 25 then 1
          else 0
        end
    
  • 0

    尝试..

    select * into temp1 
    from [StatistikinlamningDataSKL].[dbo].[SKL_AdminKontroll_result] E
    where
            ( E.Adminkontroll <> 'SKL_admin_KN_annan_AID'
        AND E.Adminkontroll <> 'SKL_admin_KN_lararloner'
        AND E.Adminkontroll <> 'SKL_admin_KN_specialitet'
        AND E.Adminkontroll <> 'SKL_admin_KN_ldatum'
        AND E.Adminkontroll <> 'SKL_admin_KN_tillsvidare'
        AND  E.Adminkontroll <> 'SKL_admin_KN_timlon'
            )
        OR ( E.Värde < 90 AND E.Adminkontroll = 'SKL_admin_KN_ldatum')
        OR ( E.Värde < 50 and E.Värde > 95 AND E.Adminkontroll ='SKL_admin_KN_tillsvidare')
        OR (E.Värde < 5 and E.Värde > 25 AND  E.Adminkontroll = 'SKL_admin_KN_timlon')
    

相关问题