私は以下のクエリを得て、EAMATTNSTATUS = 7または8を0.5として、EAMATTNSTATUS = 6をEAMATTNSTATUS = 6としてEAMDATEを数えたいとします。重複なしで数える方法は?
SELECT EAMEMID,
SUM(CASE WHEN EAMATTNSTATUS in (7) OR EAMATTNSTATUS in (8) THEN 1 ELSE 0 END)/2 + COUNT(DISTINCT CASE WHEN EAMATTNSTATUS in (6) THEN EAMDATE END) as ABSENTDAYS
FROM viewDAILYSUM
WHERE (EAMEMID = :EAMEMID) AND
(EAMDATE between :FDate and :TDate)
GROUP BY EAMEMID
ORDER BY EAMEMID
私にとっては困難な部分、1 EAMDATEはEAMATTNSTATUS = 7または8の状態とEAMATTNSTATUS = 6を有することができることが、このいくつかの状況という。つまり、2つのステータスを持つため、そのEAMDATEのカウントを2回複製します。
どのように私は重複を修正することができますか?
私が個別に使用しようとしたが、それは仕事をdidntの...
任意のアイデア??!
おかげで申し訳
SAMPLE DATA
EAMEID | EAMDATE | EAMATTNSTATUS|
------ | --------| -------------|
161 |20/7/2016| 6 |
161 |20/7/2016| 7 |
161 |21/7/2016| 6 |
161 |22/7/2016| 5 |
161 |23/7/2016| 8 |
CURRENT OUTPUT
EAMEID | EAMDATE | ABSENTDAYS |
------ | --------| -------------|
161 |20/7/2016| 1 |
161 |20/7/2016| 0.5 |
161 |21/7/2016| 1 |
161 |22/7/2016| 0 |
161 |23/7/2016| 0.5 |
WANTED RESULT
EAMEID | EAMDATE | ABSENTDAYS |
------ | --------| -------------|
161 |20/7/2016| 0.5 |
161 |21/7/2016| 1 |
161 |22/7/2016| 0 |
161 |23/7/2016| 0.5 |
サンプルデータと予想される結果..こんにちは –
私にはトリッキーな質問のように見える、私は,,あなたのコメントを待って、必要な情報を追加したおかげ – Majed