SELECT
(CASE
WHEN
(SELECT COUNT(*)
FROM EMPLOYEE
WHERE PERCOD = DB.PERID) > 1 THEN
(SELECT PERNAME
FROM EMPLOYEE
WHERE PERCOD = DB.PERID
AND ISDELETED = 0)
ELSE
(SELECT PERNAME
FROM EMPLOYEE
WHERE PERCOD = DB.PERID)
END) AS PERNAME
FROM BALANCE DB
LEFT JOIN BALANCE_BONUS DBB
ON DBB.ID = DB.BONUSID
WHERE DB.ISDELETED != 1
ORDER BY DB.ID;
----------------------------------------------------(CASE
WHEN
(SELECT COUNT(*)
FROM EMPLOYEE
WHERE PERCOD = DB.PERID) > 1 THEN
(SELECT PERNAME
FROM EMPLOYEE
WHERE PERCOD = DB.PERID
AND ISDELETED = 0)
ELSE
(SELECT PERNAME
FROM EMPLOYEE
WHERE PERCOD = DB.PERID)
END) AS PERNAME
這一段代碼會非常消耗查詢時間。 作用是 排除 EMPLOYEE 表中PERCOD重複的資料 , ISDELETED字段為已删除。 首先查詢級聯的人員是否有重複資料,如果隻有一條則顯示這唯一的一條; 如果有多條,則顯示ISDELETED字段為0的一條資料。 有沒有大牛給個優化解決方法!!!