当前位置: 代码迷 >> Sql Server >> 求解:怎么通过判断,在视图中获取不同的列值
  详细解决方案

求解:怎么通过判断,在视图中获取不同的列值

热度:51   发布时间:2016-04-27 13:45:58.0
求解:如何通过判断,在视图中获取不同的列值
建了一个por_inv的视图:
SELECT dbo.invdtf.fitemno, dbo.invdtf.fwhcd, dbo.invdtf.flotno2, dbo.invdtf.flotno, 
  dbo.invdtf.fcoilno1, dbo.invdtf.fvendinvc, dbo.porecf_porlsf.mfcoilno1, 
  dbo.porecf_porlsf.fitemno AS fitemno_b
FROM dbo.invdtf RIGHT OUTER JOIN
  dbo.porecf_porlsf ON dbo.invdtf.fcoilno1 = dbo.porecf_porlsf.mfcoilno1

现在想通过判断表invdtf中fvendinvc的值是否是"以S开头并且len(fvendinvc)= 18"来取值
如果是,则取视图中的fitemno,如果不是,在取fitemno_b

------解决方案--------------------
SQL code
SELECT CASE WHEN fvendinvc LIKE 'S%' AND len(fvendinvc)= 18 THEN fitemno ELSE fitemno_b END AS fitemnoFROM por_inv
------解决方案--------------------
SQL code
select (case when left(dbo.invdtf.fvendinvc,1)='S' then dbo.invdtf.fitemno else dbo.porecf_porlsf.fitemno end) AS fitemno,  dbo.invdtf.fwhcd, dbo.invdtf.flotno2, dbo.invdtf.flotno,    dbo.invdtf.fcoilno1, dbo.invdtf.fvendinvc, dbo.porecf_porlsf.mfcoilno1FROM dbo.invdtf RIGHT OUTER JOIN  dbo.porecf_porlsf ON dbo.invdtf.fcoilno1 = dbo.porecf_porlsf.mfcoilno1
------解决方案--------------------
SQL code
CASE WHEN fvendinvc LIKE 'S%' AND len(fvendinvc)= 18 THEN fitemno ELSE fitemno_b END AS fitemno
  相关解决方案