代码之家  ›  专栏  ›  技术社区  ›  Italo Rodrigo

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

  •  0
  • Italo Rodrigo  · 技术社区  · 5 年前

    我在一个sqlserver数据库中有一个表,它模拟一个bingo卡。总共有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 回复  |  直到 5 年前
        1
  •  1
  •   Gordon Linoff    5 年前

    您应该修复数据模型,使值位于列中而不是行中。使用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;
    

    将其余数字填入 . . . .