Когда я пытался создать уникальный индекс в нашем конечном наборе данных, я заметил, что у нас есть данные, которые имеют несколько строк для одной и той же информации. У меня есть следующие данные. Для тех, у кого samstrat «IN», я должен классифицировать первый как «Regular», второй как «Duplicate», а третий как «Other». Другие samstrats были классифицированы правильно. Эти классификации входят в новый столбец с именем sam_type.
ROWNUM Site_id_program smp_date samstrat
13 1E1-134 4/21/1983 IN
14 1E1-134 4/21/1983 IN
15 1E1-134 4/21/1983 EPI
16 1E1-134 4/21/1983 IN
17 1E1-134 4/21/1983 HYP
Я пробовал следующее, но получаю ошибки, связанные с отсутствующими скобками. Но я даже не уверен, можете ли вы использовать такую длинную строку кода в функции CASE или это даже наиболее практично. У нас нет никакой другой идентифицирующей информации для этих образцов, поэтому я подумал, что хочу выбрать МИНУТУ ROWNUM для Обычного, Второго в качестве Дублирующего и MAX в качестве Другого. Но я не уверен, что это возможно, так как ROWNUM, похоже, рассчитывается для каждого оператора select?
SELECT *,
DECODE(samstrat,'HYP','HYPO', samstrat) AS samstrat_02,
CASE WHEN only_once='Y' THEN 'Annual'
WHEN samstrat = 'HYP' THEN 'Other'
WHEN samfreq = 'A' AND type = 'REG' THEN 'Annual'
WHEN samfreq = 'A' AND type = 'DUP' THEN 'Duplicate'
WHEN sample_no = 2 THEN 'Duplicate'
--WHEN (MIN(ROWNUM(site_id_program ||'x'|| samstrat ||'x'|| smp_date ))) THEN 'Regular'
--WHEN (Middle/SecondROWNUM(site_id_program ||'x'|| samstrat ||'x'|| smp_date ))) THEN 'Duplicate'
--WHEN (MAX(ROWNUM(site_id_program ||'x'|| samstrat ||'x'|| smp_date ))) THEN 'Other'
ELSE 'Regular'
END AS sam_type
FROM waterstage.wq_meltm_1982_2010_mv_test)
Я бы хотел, чтобы три рассматриваемых образца были должным образом классифицированы как обычные, дублирующие или другие. В идеале я бы не хотел создавать другое материализованное представление для этого шага.
ROWNUM Site_id_program smp_date samstrat sam_type
13 1E1-134 4/21/1983 IN Regular
14 1E1-134 4/21/1983 IN Duplicate
15 1E1-134 4/21/1983 EPI Regular
16 1E1-134 4/21/1983 IN Other
17 1E1-134 4/21/1983 HYP Other