如何知道表字段是否与数字匹配?

时间:2019-01-19 22:40:50

标签: sql sql-server select

我在SQLServer数据库中有一个模拟宾果卡的表。共有25个字段代表卡上的数字:n1, n2, n3, ..., n25

类似于以下图像: enter image description here

假设我抽奖数字5、28和67,如果存储在桌上的卡片与字段和数字匹配,如何进行选择?

结果将是

Card | Matchs 1 | 3 2 | 3 3 | 2 4 | 1 5 | 1 6 | 1

有什么建议吗?谢谢。

1 个答案:

答案 0 :(得分:1)

您应该修复数据模型,以使值位于列而不是行中。 SQL Server使得使用apply取消数字的转换非常容易,因此您可以解决此问题:

select b.*, s.cnt
from bingo b cross apply
     (select count(*) as cnt
      from (values (n1), (n2), . . ., (n25)) v(n)
      where n in (5, 28, 67)
     ) s;

填写. . .中的其余数字。