В целях отчетности мне нужно создать на первый взгляд очень простой отчет, только создать его - задача!Значения должны быть изменены для меток, а количество вхождений каждой метки должно быть подсчитано.
Я уже создал запрос, который выглядит нормально, только он не показывает метку, когда нет вхождений.
Это код, который я сейчас использую.
COLUMN c1 HEADING "Entity" FORMAT A8
COLUMN c2 HEADING "Quantity" FORMAT 9999999
BREAK ON c1
SELECT (CASE
WHEN cat_code = '1234'
AND SUBSTR(prod_nbr,1,6) IN (SELECT SUBSTR(prod_code,1,6)
FROM product_codes
WHERE SUBSTR(prod_code,1,5) != 12345
AND SUBSTR(prod_code,1,6) != 987654
)
THEN 'AAA_X'
WHEN cat_code != '1234'
AND SUBSTR(prod_nbr,1,6) IN (SELECT SUBSTR(prod_code,1,6)
FROM product_codes
WHERE SUBSTR(prod_code,1,5) != 12345
AND SUBSTR(prod_code,1,6) != 987654
)
THEN 'AAA_Y'
WHEN cat_code = '1234'
AND SUBSTR(prod_nbr,1,6) NOT IN (SELECT SUBSTR(prod_code,1,6)
FROM product_codes
)
THEN 'BBB_X'
WHEN cat_code != '1234'
AND SUBSTR(prod_nbr,1,6) NOT IN (SELECT SUBSTR(prod_code,1,6)
FROM product_codes
)
THEN 'BBB_Y'
END) c1
, COUNT(*) c2
FROM purchases
WHERE end_time >= '&1'
AND end_time < '&2'
GROUP BY (CASE
WHEN cat_code = '1234'
AND SUBSTR(prod_nbr,1,6) IN (SELECT SUBSTR(prod_code,1,6)
FROM product_codes
WHERE SUBSTR(prod_code,1,5) != 12345
AND SUBSTR(prod_code,1,6) != 987654
)
THEN 'AAA_X'
WHEN cat_code != '1234'
AND SUBSTR(prod_nbr,1,6) IN (SELECT SUBSTR(prod_code,1,6)
FROM product_codes
WHERE SUBSTR(prod_code,1,5) != 12345
AND SUBSTR(prod_code,1,6) != 987654
)
THEN 'AAA_Y'
WHEN cat_code = '1234'
AND SUBSTR(prod_nbr,1,6) NOT IN (SELECT SUBSTR(prod_code,1,6)
FROM product_codes
)
THEN 'BBB_X'
WHEN cat_code != '1234'
AND SUBSTR(prod_nbr,1,6) NOT IN (SELECT SUBSTR(prod_code,1,6)
FROM product_codes
)
THEN 'BBB_Y'
END)
ORDER BY 1;
Для меток BBB_X и BBB_Y в базе данных еще нет данных, что не отражается в отчете.Результат, который я ищу, будет похож на этот пример.
Entity;Quantity
------ --------
AAA_X ; 123456
AAA_Y ; 654321
BBB_X ; 0
BBB_Y ; 0