【问题标题】:select statment with case condition sqlserver带有case条件sql server的select语句
【发布时间】:2011-03-02 13:43:47
【问题描述】:

我有一张员工表

empname code1  code2
 kiran   aa    bng
 manju   yh    yh
 anu     yu01  yuo1

现在我需要做一个这样的选择语句

SELECT case when (employee.code1)=''
 then         
      mappingcode.Code            
   else             
then
       employee.code2          
   end as Code   
 FROM 
employee  where bic1=  'kiran'

但我得到一个错误,

在我的项目中我有一个类似的问题,只是解释了我已经定义问题的问题

我需要在这里首先检查code1,如果为null,则从其他表中设置其值,如果没有将code2值分配给code1

code1-->code2

多部分标识符employee.code2 出现错误 希望我的问题很清楚

任何人都可以帮助我了解如何实现它的语法。

谢谢

王子

【问题讨论】:

  • mappingcodeemployee 表的结构是什么?
  • 你确定错误信息是关于employee.code2的吗?从您的脚本看来,有问题的部分应该是mappingcode.Code,因为您没有将mappingcode 加入到您的查询中。您发布的查询不完整或错误消息与之无关。

标签: sql-server-2005


【解决方案1】:

如果你只是想要选择,我认为这会对你有所帮助:

    SELECT empname, CASE 
WHEN employee.code1 IS NULL THEN mappingcode.code
ELSE
employee.code2 end as Code1
FROM employee INNER JOIN mappingcode ON employee.empname = mappingcode.empname

如果你想要更新,试试这个:

    Update employee set code1 = x.code from (SELECT empname, CASE 
WHEN employee.code1 IS NULL THEN mappingcode.code
ELSE
employee.code2 end as code
FROM employee INNER JOIN mappingcode ON employee.empname = mappingcode.empname) x 
 inner join employee on employee.empname = x.empname

在不了解您的架构的情况下,我认为这就是您正在寻找的。​​p>

感谢 Andriy 指出我在帖子中选择了相同的选项和一个小错误:)

【讨论】:

  • 这就是复制粘贴所得到的结果:两段完全相同的代码。 :) 除此之外,我认为这也有问题:WHEN employee IS NULL
  • @Andriy... 太真实了:) 现在修复它:)
猜你喜欢
  • 2012-02-07
  • 2016-01-11
  • 2012-05-18
  • 1970-01-01
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
  • 2014-12-05
  • 1970-01-01
相关资源
最近更新 更多