我有以下查詢;SQL根據條件僅返回特定行
SELECT DISTINCT CASE
WHEN ROLE.OBJECT = A.REFSTR THEN P.REFSTR + '-A'
WHEN ROLE.OBJECT = AG4.REFSTR THEN P.REFSTR + '-AG4'
WHEN ROLE.OBJECT = AG3.REFSTR THEN P.REFSTR + '-AG3'
WHEN ROLE.OBJECT = AG2.REFSTR THEN P.REFSTR + '-AG2'
WHEN ROLE.OBJECT = AG1.REFSTR THEN P.REFSTR + '-AG1'
END AS REFSTR
FROM APPLICATIONGROUP AG1
JOIN APPLICATIONGROUP AG2
ON AG2.BELONGSTO = AG1.REFSTR
JOIN APPLICATIONGROUP AG3
ON AG3.BELONGSTO = AG2.REFSTR
JOIN APPLICATIONGROUP AG4
ON AG4.BELONGSTO = AG3.REFSTR
JOIN RELATIONS R
ON R.TOREF = AG4.REFSTR
AND R.PROPERTY = 'ApplicationGroups'
JOIN APPLICATION A
ON A.REFSTR = R.FROMREF
JOIN ROLE
ON ROLE.OBJECT = A.REFSTR
OR ROLE.OBJECT = AG1.REFSTR
OR ROLE.OBJECT = AG2.REFSTR
OR ROLE.OBJECT = AG3.REFSTR
OR ROLE.OBJECT = AG4.REFSTR
JOIN ROLETYPE RT
ON RT.REFSTR = ROLE.ROLETYPE
AND RT.NAME = 'BC Coordinator'
JOIN PERSON P
ON P.REFSTR = ROLE.RESPONSIBLE
WHERE A.REFSTR = '326-1480-0'
它給我下面的記錄返回;
REFSTR
273-1123-0-A
273-18075-0-AG4
273-26853-0-AG3
273-27196-0-AG2
273-3235-0-AG1
我在找的是一種只顯示第一條記錄的方法,如果它存在的話; 如果選擇記錄'%A',則只顯示'%A',如果沒有顯示記錄'%A',則顯示'%AG4'等。
所以需要輸出記錄,如果找不到表格應用程序,如果找不到,那麼ApplicationGroup AG4如果找不到,那麼AG3等等。
一個更新,因爲也許我在我原來的問題不夠清楚。
我有一個應用程序組的等級AG1 =父母,AG2孩子AG1,AG3孩子AG2,AG4孩子AG3。這是由孩子的父母REFSTR = BELONGSTO處理的。
我有一個鏈接到AG4組的應用程序,在表關係中處理鏈接。所以application.REFSTR = Relation.FROMREF和AG4.REFSTR = Relation.TOREF。
在這些對象A,AG1,AG2,AG3,AG4中的每一個上,我都可以分配一個責任(BC協調員),這是一個對某人的引用。這在表ROLE中處理,因此OBJECT引用應用程序A或其中一個應用程序組(AG1,AG2,AG3,AG4),然後引用ROLE上的Person.RESPONSIBLE = PERSON.REFSTR。這裏的最後一個連接是ROLETYPE.REFSTR = ROLE.ROLETYPE,它將(BC協調員)控制爲一個特定的RoleType.責任的分配可以是1-1或1-n在任何級別。
要求如下;
我需要的都開始於應用程序A,如果責任(BC協調員)的分配如果存在的話那就給我誰擁有這1個或多個的所有人員。
如果在應用程序中找不到任何內容,請查看應用程序A分配到的ApplicationGroup AG4。再次是1或很多。
如果在ApplicationGroup AG4上找不到任何內容,請查看其父ApplicationGroup AG3。
如果在ApplicationGroup AG3上找不到任何內容,請查看其父應用程序組AG2。
如果在ApplicationGroup AG2上找不到任何內容,請查看其父應用程序組AG1。
如果仍然沒有發現,則沒有結果。
我遇到的問題是這個邏輯從一個層次到另一個,因爲我之前的評論使用此查詢,如果它只是始終得到1周的結果將工作的頭等1,但是這可能是很多結果在任何級別。
感謝TOP1得到我,我找然而所有這些類別的結果可能有多個,我需要所有的人,所以如果2個記錄來,爲要接2,如果沒有A和2 AG4然後從AG4的2 – RobertE 2014-11-03 21:35:50
這種矛盾你在你的問題中陳述。似乎你需要提供更多的解釋。 – 2014-11-03 22:40:35
嗨,請看我的主要問題,我希望它更清晰。 – RobertE 2014-11-04 07:10:48