我有一個表與下面的列查詢找到重複的,但不包括設置
Emp_id
Work_date
element
我要查詢(以下查詢修改後的版本),如果有超過1個一行將返回單行在上表中給出work_date和員工id(GROUP BY EMP_ID和WORK_DATE)。所以我寫了查詢,如:
SELECT EMP_ID, WORK_DATE FROM myTable
where WORK_DATE = :p_WorkDate
GROUP BY EMP_ID, WORK_DATE
HAVING COUNT (1) > 1
例如:
EMP_ID WORK_DATE
1 1/1/2013
1 1/1/2013
2 1/1/2013
查詢應該返回如下如果我通過2013年1月1日爲:p_WorkDate:
1 1/1/2013
基本上我我試圖找出EMP_ID和WORK_DATE是否有多於1行,但是對於ELEMENT列包含的額外要求 - 如果它包含來自集合(element1 + element2)或(element3 + element4)的值。
附加要求(以下)取決於元素列包含的內容(如果行具有來自set的值)。
1)有2行與相同EMP_ID和work_date和元件列中的一個被元素1和其他元件列在element2(一組元素1和要素2)
的例如:
EMP_ID WORK_DATE element
1 1/1/2013 element1
1 1/1/2013 element2
因爲即使有兩行查詢應不返回任何行,這是一組(部件1和elelement2)
2)有2排與元件列的相同EMP_ID和work_date一個是元素3和其他元素列是元素T4(一組元素3和元素4)
例如:
EMP_ID WORK_DATE element
1 1/1/2013 element3
1 1/1/2013 element4
因爲即使有兩行查詢應不返回任何行,它是一組(元素3和元素4)
3)如果有2行與相同EMP_ID和work_date並且不是一組如上應返回的行
例如:
EMP_ID WORK_DATE element
1 1/1/2013 element1
1 1/1/2013 xxx
(相同的結果,如果元件管柱element2的代替元素1)
查詢應該返回如果我通過2013年1月1日爲如下:p_WorkDate:
1 1/1/2013
4)如果有多於2行具有相同的emp_id和work_date,無論哪個元素列包含,都應該返回一行。
例如:
EMP_ID WORK_DATE element
1 1/1/2013 element1
1 1/1/2013 element2
1 1/1/2013 xxx
查詢應該返回如果我通過2013年1月1日爲如下:p_WorkDate:
1 2013年1月1日
謝謝
這些組對存儲在哪裏?此外,計數(1)通常是計數(*) - 計數(1)沒有優勢,而非常規性則是缺點。 –
@DavidAldridge - 對可以在查詢中進行硬編碼 – user1663715