首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL确定给定行上是否有多个列具有相同的值。

SQL确定给定行上是否有多个列具有相同的值。
EN

Stack Overflow用户
提问于 2020-03-16 15:31:21
回答 4查看 388关注 0票数 2

我有一个Server表,其中包含9列,用于指示在UI的一部分中包含或排除哪些内容。每一列的值都可以是'A‘、'X’或空白。每一行在任何列中最多应有1 'A‘。

由于一个错误,许多列有多个'A‘值。如何编写返回打破此约束的每一行的查询?

我所拥有的只是:

代码语言:javascript
复制
SELECT PrimaryKey
FROM Criteria C
WHERE (C.First = 'A' AND C.Second = 'A')
   OR (C.First = 'A' AND C.Third = 'A')
   OR (C.First = 'A' AND C.Fourth = 'A')
   ...
   OR (C.Eighth = 'A' AND C.Ninth = 'A')

是否有任何更简洁或更优雅的方式来编写这些代码?

EN

Stack Overflow用户

回答已采纳

发布于 2020-03-16 15:57:19

您可以使用APPLY

代码语言:javascript
复制
SELECT C.*
FROM Criteria C CROSS APPLY
     (SELECT COUNT(*) as num_a_s
      FROM (VALUES (First), (Second), . . .  -- list all the columns here
           ) V(x)
      WHERE v.x = 'A'
     ) v
WHERE v.num_a_s >= 2;

注意:如果将这些值存储在列中而不是单独的行中,则数据模型可能有问题。

票数 2
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60708808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档