【问题标题】:SQL: select 3 values and count how many times they are differentSQL:选择3个值并计算它们不同的次数
【发布时间】:2020-10-28 17:42:59
【问题描述】:

假设您需要查询一些数据并且有如下三个字段(这是更大查询的一部分): Field1, Field2, Field3.

所以你像这样选择它们:

SELECT Field1=MyTable.Field1, Field2=MyTable.Field2, Field3=MyTable.Field3
FROM MyTable

我需要比较这些值并返回变量Result,计算如下:

  • 0 如果它们都相同
  • 如果两个相同而一个不同则为 1/2
  • 1 如果它们都不同。

我应该如何重组我的查询?我想我需要一个子查询,但我不知道如何构造它。

【问题讨论】:

    标签: sql select subquery


    【解决方案1】:

    你可以使用case:

    select (case when field1 = field2 and field1 = field3 then 0
                 when field1 in (field2, field3) or field2 = field3 then 0.5
                 else 1
            end) as result
    

    【讨论】:

    • 如果我这样做,返回的值不会与任何变量名相关联。变量名Result应该去哪里?
    • 暗示添加as result
    • 检查我的编辑。这些变量在选择时被分配了不同的名称。这不会因为查询中有太多 = 符号而造成混乱吗?
    • @Zizzipupp 。 . .实际上,您分配的名称与无论如何都会给出的列相同。但是,是的,您应该为 case 中的表达式使用限定列名。
    猜你喜欢
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 2020-10-04
    相关资源
    最近更新 更多