簡體   English   中英

存儲過程,用於查找3列中的2列中的值

[英]stored procedure to find value in 2 columns out of 3

我正在處理samle日期,我應該做類似於我所要求的事情。 我想運行一個查詢,它會將任意兩列中的值拉出3,如果它有1,或者如果任何一列有1,它將只返回那些結果。 但是,它應該搜索所有三列,並且在它找到值為1的三列中的任何一列中都應該返回該結果。 任何人都可以幫我這個。 提前致謝。

ID  Patient PatientName 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 0   0   1
6   102564  Frank Milon 1   1   0
7   102692  Thomas Kroning  1   0   1
8   102856  Andrew Philips  1   0   0
9   102915  Alice Davies    0   0   1
10  103785  Jon Durley  0   0   1

如果我理解你的問題,你想要設置有1或2個“Prio *”標志的患者,但要排除設置了零或全部3個Prio標志的患者。 假設標志被限制為[0,1]的域 - 例如不可空的位,那么以下應該做的伎倆:

SELECT ID, Patient, PatientName
FROM Patients
WHERE (0 + prio + prio2 + prio3 >= 1) AND (0 + prio + prio2 + prio3 <= 2)

編輯只是關於性能的注釋 - 你沒有提到哪個SQL,但是在這樣的位字段上搜索幾乎肯定會導致表掃描。 為了提高性能,您可以在SQL Server上創建prio + prio2 + prio3上的持久計算列,然后對其進行索引 - 根據數據的分布,索引至少具有選擇性的可能性。

Edit2根據Shawnt00的注釋,無法在不轉換為其中一種數字類型的情況下添加位字段。 (謝謝!)

另一種選擇:要求在列值中找到零和一。

WHERE 0 IN (prio, prio, prio3) AND 1 IN (prio, prio2, prio3)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM