2
SELECT *
FROM
(
SELECT stat,
SUM(DECODE(visa_country,'US',1,0)) AS USA,
SUM(DECODE(visa_country,'United Kingdom',1,0)) AS UK,
SUM(DECODE(visa_country,'Australia',1,0)) AS Australia,
SUM(DECODE(visa_country,'Canada',1,0)) AS Canada,
SUM(DECODE(visa_country,'Switzerland',1,0)) AS Switzerland,
SUM(DECODE(visa_country,'Singapore',1,0)) AS Singapore,
SUM(DECODE(visa_country,'Sweden',1,0)) AS Sweden,
SUM(DECODE(visa_country,'Netherlands',1,0)) AS Netherlands
FROM
(
SELECT *
FROM
(
SELECT stat,
visa_country,
DECODE(stat,'>= 0 '||'&'||' < 15', 1
,'>= 15 '||'&'||' < 30',2
,'>= 30 '||'&'||' < 45',3
,'>= 45 '||'&'||' < 60',4
,'>= 60 '||'&'||' < 75',5
,'>= 75 '||'&'||' < 90',6
,' >= 90',7) AS gr
FROM (
SELECT end_date,
visa_country,
CASE WHEN END_DATE between 0 and 14 THEN '>= 0 '||'&'||' < 15'
WHEN END_DATE BETWEEN 15 AND 29 THEN '>= 15 '||'&'||' < 30'
WHEN END_DATE BETWEEN 30 AND 44 THEN '>= 30 '||'&'||' < 45'
WHEN END_DATE BETWEEN 45 AND 59 THEN '>= 45 '||'&'||' < 60'
WHEN END_DATE BETWEEN 60 AND 74 THEN '>= 60 '||'&'||' < 75'
WHEN END_DATE BETWEEN 75 AND 89 THEN '>= 75 '||'&'||' < 90'
WHEN END_DATE > 90 THEN ' >= 90'
END AS stat
FROM
(
SELECT visa_country,
GREATEST(
NVL(TO_DATE(VP.WP_VALID_TILL,'DD-MON-YY'),TO_DATE(SYSDATE,'DD-MON-YY')),
NVL(TO_DATE(VP.VISA_VALID_TILL,'DD-MON-YY'),to_DATE(SYSDATE,'DD-MON-YY'))
)
- TO_DATE(SYSDATE,'DD-MON-YY') AS END_DATE
FROM visa_prac AS vp
)
) AS x
WHERE x.end_date > 0
)
) GROUP BY stat
ORDER BY gr
)
これは、従業員の数を与えるコードである...しかし、ここで問題は、任意のカウントがゼロであれば、それはその行全体を表示されていないということです....不足している行
> = 75 & < 90の範囲内に詳細がない場合は、その行が表示されないようにしてください。
ご理解のほどよろしくお願いいたします。
こんにちはuはロジックが全体code.iをfdが理解below.hopeに言及イムコードF 1つの部分とDの問題sがその不器用を知っていると私はいくつかの代替を提案this.plzに非常に新しいと思うtalha.iこのためには、visa_country、GREATESTを選択してください。(NV_ TO_DATE(VP.WP_VALID_TILL、 'DD-MON-YY')、to_DATE(sysdate、 'DD-MON-YY'))、NVL(TO_DATE(VP.VISA_VALID_TILL、 visa_prac vp ....からEND_DATEまでの間、(DD-MON-YY))、to_DATE(sysdate、 'DD-MON-YY')))-to_DATE(sysdate、 'DD-MON-YY') sysdate.iよりも小さい日付を削除するには、ゼロを作成しています。 "WHERE x.end_date> 0"が間違っていると古いレコードも返されます – user853830
OKこれで試してみることができます: 'WHERE x.end_date> = 0 'これにはZEROSのすべての行も含まれます。 –
いいえ、それは動作していないようだ...... :-(私はそれを試したが、まだ行が欠けている。特にその行のすべての列にデータがないので、75から90 – user853830