[英]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.