【问题标题】:How to create column based on another column on Policy Level SQL Server 2012如何基于策略级别 SQL Server 2012 上的另一列创建列
【发布时间】:2019-07-07 15:45:44
【问题描述】:

我有这样的表:

declare @ClaimType table (PolicyNumber varchar(50), QuoteID int,  CoverageType varchar(50))

insert into @ClaimType values   ('00001',1, 'CSO'),
                                ('00001',2, 'CPL'),
                                ('00001',3, 'EO'),
                                ('00002',1, 'CPL'),
                                ('00002',2, 'CGL')

select QuoteID,
        PolicyNumber,      
        CoverageType
from @ClaimType
go

我需要创建列“AnnualStatementLine”并根据CoverageType在其中生成值

在策略级别上,我需要检查 CoverageType 是否具有“CGL”值。如果不是,则写 '17.1' 否则写 '19.1'

所以PolicyNumber 00001 没有CoverageType 'CGL',所以AnnualStatementLine 应该是17.1

对于政策 00002,其中一个值为“CGL”,因此需要为“19.1”

是否有可能在单个 select 语句中实现?

结果应该是这样的:

谢谢

【问题讨论】:

    标签: sql sql-server tsql sql-server-2012


    【解决方案1】:

    您可以使用EXISTS

    SELECT ct.*,
           (CASE WHEN EXISTS (SELECT 1 
                              FROM @ClaimType ct1 
                              WHERE ct1.PolicyNumber = ct.PolicyNumber AND ct1.CoverageType = 'CGL'
                             ) 
                 THEN '19.1' 
                 ELSE '17.1'
            END) AS AnnualStatementLine
    FROM @ClaimType ct;
    

    【讨论】:

      【解决方案2】:

      您可以使用IN 子句尝试以下查询。

      declare @ClaimType table (PolicyNumber varchar(50), QuoteID int,  CoverageType varchar(50))
      
      insert into @ClaimType values   ('00001',1, 'CSO'),
                                      ('00001',2, 'CPL'),
                                      ('00001',3, 'EO'),
                                      ('00002',1, 'CPL'),
                                      ('00002',2, 'CGL')
      
      select QuoteID,
              PolicyNumber,      
              CoverageType,
              case when PolicyNumber IN (Select PolicyNumber from @ClaimType where CoverageType = 'CGL') then 19.1
              else 17.1 end as AnnualStatementLine
      from @ClaimType
      

      Demo Link

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-05
        • 2014-08-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多