【问题标题】:Adding a column with values in query [closed]在查询中添加具有值的列[关闭]
【发布时间】:2015-09-01 09:22:07
【问题描述】:

我需要在查询中添加一个包含值的列。一个简化的例子:

示例表:

  ID     Fruit
+-----+---------+
|  0  |  Apple  |
+-----+---------+
|  1  |  Pear   |
+-----+---------+

我想要一个添加以下硬编码列名 + 值的查询:

  ID     Fruit     MyFavorite
+-----+---------+-------------+
|  0  |  Apple  |      YES    |
+-----+---------+-------------+
|  1  |  Pear   |      NO     |
+-----+---------+-------------+

非常清楚:我不想要任何新表,只想要给出这个结果的查询。

怎样才能达到这个结果?

编辑:这只是一个假表的例子。我想要更多表格,我想要更改现有表格,MyFavorite 中的值应该是硬编码的。

【问题讨论】:

  • 更改表并在表中添加一个新列 MyFavorite
  • @ArunprasanthKV 是的,但我不想那样。
  • 如果yes no没有逻辑那么你的要求没有意义
  • 如果您没有规则,那么您别无选择,只能手动执行...通过 case 语句或更新语句。
  • 我没有投反对票。但是,为了对查询中的值进行硬编码,必须了解规则。你被要求告诉我们规则,你说没有。但是如果没有关于如何应用 YES 和 NO 的规则,那么 YES 和 NO 将是随机的。然而,这不是你想要的。您希望应用规则:ID 0 为 YES,ID 1 为 NO。或者:Apple 为 YES,Pear 为 NO。说没有规则可能是其他人不认为您的请求在此论坛中有价值的条目的原因。

标签: sql sql-server select


【解决方案1】:

您可以使用case 表达式:

SELECT id
     , fruit
     , CASE fruit 
         WHEN 'Apple' THEN 'YES' 
         ELSE 'NO' 
       END AS MyFavorite
FROM   exampleTable

【讨论】:

  • 我没有投反对票,但我希望他没有说逻辑基于 Fruit 列的值,这就是为什么投反对票的原因,但无论如何他只是说他需要在那种视图中硬编码的值答案是正确的
  • 这正是我想要的!会尽快接受。谢谢@Mureinik
【解决方案2】:

由于表格永远不会改变,而且您想对值进行硬编码,为什么还要有那个表格?算了吧。这是为您提供所需结果的查询:

select  0 as id, 'Apple' as fruit, 'YES' as myfavorite
union all
select  1 as id, 'Pear' as fruit, 'NO' as myfavorite;

(我没有看到硬编码值而不是将它们简单地放在表格中的意义,但是你去吧。)

【讨论】:

    【解决方案3】:

    你可以这样做:

    SELECT yt.id, yt.fruit,
            CASE WHEN YOURLOGIC!
                THEN N'YES' -- if logic = true
                ELSE N'NO' -- if logic = false
            END as MyFavorite
    FROM dbo.YourTable as yt
    

    但是您需要定义让 sql server 决定是或否的逻辑。

    【讨论】:

      【解决方案4】:

      分两步: 1.

       alter mytable add MyFavorite nvarchar(x)
      

      2.

        update mytable set=
          CASE when Fruit='Apple' then 'YES' 
          else 'NO' 
          END 
      

      【讨论】:

        【解决方案5】:

        如果你只想要一个查询并且不想改变表结构:

        select ID
            ,Fruit
            , CASE WHEN Fruit = 'Apple' THEN 'YES' ELSE 'NO' END as MyFavorite
        from Fruits
        

        【讨论】:

        • 他没有说逻辑是基于 Fruit 列的值
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多