【问题标题】:Finding column in a table and pull the the values if exist else refer other column在表中查找列并提取值(如果存在),否则请参阅其他列
【发布时间】:2017-08-22 14:18:29
【问题描述】:

我正在尝试检查表 [EMPLOYEE] 中的列 [EMPID](如果存在)我必须考虑该列中的值,否则它必须引用另一个表 [详细信息] 和列 [EMPID]。请有人可以回答这个问题。

select distinct EMPLYEENAME,(
select case 
   when exists (select 1 from sys.columns where Name = 'EMPID' and 
   object_id=object_id('EMPLOYEE'))
   then 1
   else 0 
end EMPID) EMPID from EMPLOYEE
)k

所以在 '1' 和 '0' 的位置,我必须从 DETAILS 表和 EMPLOYEE 表中提取值

【问题讨论】:

  • 请在标签中添加您使用的 SQL 数据库?
  • 您需要编辑您的问题并提供示例数据和所需的结果。为您正在使用的数据库添加标签。这个问题可能对您有意义 请记住您正在与陌生人交流。
  • 我会考虑这种糟糕的数据库设计。通常,您不必担心列是否存在,而应该担心特定列中的数据。
  • 您的问题将需要样本表数据来找出解决方案

标签: sql sql-server-2008


【解决方案1】:

可能最好做这样的事情。在执行查询之前先检查列,这样就不会出现丢失列的错误:

IF EXISTS(select 1 from sys.columns where Name = 'EMPID' and object_id=object_id('EMPLOYEE'))
    select distinct EMPLYEENAME, EMPID from EMPLOYEE
ELSE
    select distinct EMPLYEENAME, 0 AS EMPID from EMPLOYEE

【讨论】:

    【解决方案2】:

    这将检查表中是否有列名,如果没有,则会从另一个表中选择

    IF EXISTS(SELECT 1 FROM sys.columns WHERE name = 'EMPID' AND object_id=object_id('EMPLOYEE'))
        SELECT DISTINCT employeename,
               empid
          FROM employee
    ELSE
        SELECT columns -- list your column names here
          FROM details
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 2022-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多