Sql 用于在3列中的2列中查找值的存储过程

Sql 用于在3列中的2列中查找值的存储过程,sql,stored-procedures,Sql,Stored Procedures,我在写同样的日期,我应该做一些和我要求的相似的事情。 我想运行一个查询,如果它有一个1,它将从3中提取任意两列中的值,或者如果任何一列有一个1,它将只返回这些结果。但是,它应该搜索所有三列,并在发现值为1的三列中的任何一列中返回该结果。谁能帮我一下吗。提前谢谢 ID Patient Patient Name prio prio2 prio3 ------------------------------------------------- 1 101563 Robert R

我在写同样的日期,我应该做一些和我要求的相似的事情。 我想运行一个查询,如果它有一个1,它将从3中提取任意两列中的值,或者如果任何一列有一个1,它将只返回这些结果。但是,它应该搜索所有三列,并在发现值为1的三列中的任何一列中返回该结果。谁能帮我一下吗。提前谢谢

 ID Patient Patient Name    prio  prio2   prio3
 -------------------------------------------------
 1  101563  Robert Riley        1     1       1
 2  101583  Cody Ayers          1     0       1
 3  101825  Jason Lawler        0     0       1
 4  101984  Dustin Lumis        1     0       0
 5  102365  Stacy smith         1     0       0
 6  102564  Frank Milon         1     0       0
 7  102692  Thomas Kroning      1     0       0
 8  102856  Andrew Philips      1     0       0
 9  102915  Alice Davies        0     0       1
 10 103785  Jon Durley          0     0       1
 11 103958  Clayton Folsom      1     1       1
 12 104696  Michelle Holsley    1     1       1
 13 104983  Teresa Jones        1     0       1
 14 105892  Betsy Prat          1     1       0
 15 106859  Casey Ayers         1     1       0

所以,基本上你想要拉任何3列中的任意一列,prio,prio2,或prio3=1?如果这不是你要问的(为了更好的答案),请澄清你的问题。另外,您应该用什么类型的SQL来标记它

 SELECT ID,Patient,[Patient Name],prio,prio2, prio3
 FROM uRtable 
 WHERE prio = 1 OR  prio2 = 1 OR prio3 = 1 
但是,如果您是说,您想将3列prio、prio2或prio3中的任意一列(但其中至少有一列为0)中的任意一行向后拉(在3=1的任意一列中获取任意一行,但排除所有列均为1的列),那么理解这一点最简单的方法可能是

 SELECT ID,Patient,[Patient Name],prio,prio2, prio3
 FROM uRtable 
 WHERE (prio = 1 OR  prio2 = 1 OR prio3 = 1)
 AND (prio = 0 OR  prio2 = 0 OR prio3 = 0)
试试这个:

select * from mytable
where prio + prio2 + prio3 = (
    select max(prio + prio2 + prio3)
    from mytable
    where prio = 1 or prio2 = 1 or prio3 = 1
)

如果表与此问题中的表相同,则可以通过添加查询所需的问题结果来改进问题
SELECT *
FROM tbl
WHERE 1 IN (prio,prio2,prio3)