Создание таблицы max_value в зависимости от значений столбца - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь вычислить новое значение, используя разные таблицы, но сначала мне нужно было создать вспомогательную таблицу с ограничениями этого расчета, чтобы добиться большей модульности и иметь возможность изменять пределы в любое время.

Я хотел такую ​​таблицу:

product_type      product_area    max_limit
product-100_sp         71            67.5
product-100_sp         70            22.5
product-200_se         71             80
product-200_se         70             16

Я пытался запустить это:

CREATE OR REPLACE VIEW aux_limits AS
 SELECT DISTINCT
 mtd.product_type,
 v.product_area,
 CASE WHEN (v.product_area=70 AND mtd.product_type LIKE '%product-100%' THEN 22.5 ELSE NULL END) AS Max_Limit
 CASE WHEN (v.product_area=71 AND mtd.product_type LIKE '%product-100%' THEN 67.5 ELSE NULL END) AS Max_Limit
 CASE WHEN (v.product_area=70 AND mtd.product_type LIKE '%product-200%' THEN 16 ELSE NULL END) AS Max_Limit
 CASE WHEN (v.product_area=71 AND mtd.product_type LIKE '%product-200%' THEN 80 ELSE NULL END) AS Max_Limit
 CASE WHEN (v.product_area=70 AND mtd.product_type LIKE '%product-300%' THEN 40 ELSE NULL END) AS Max_Limit
 CASE WHEN (v.product_area=71 AND mtd.product_type LIKE '%product-300%' THEN 70 ELSE NULL END) AS Max_Limit
 CASE WHEN (v.product_area=70 AND mtd.product_type LIKE '%product-400%' THEN 40 ELSE NULL END) AS Max_Limit
 CASE WHEN (v.product_area=71 AND mtd.product_type LIKE '%product-400%' THEN 340 ELSE NULL END) AS Max_Limit
 CASE WHEN (v.product_area=70 AND mtd.product_type LIKE '%product-500%' THEN 25 ELSE NULL END) AS Max_Limit
 CASE WHEN (v.product_area=71 AND mtd.product_type LIKE '%product-500%' THEN 40 ELSE NULL END) AS Max_Limit
FROM table1 AS v, table2 AS mtd
WHERE (product_area=71 OR product_area=70)
GROUP BY 1,2

Структура mtd:

local_id global_id product_name    project_name      product_type
  745      896      example1         example1        product-100_test

Иструктура v:

product_key product_area      timestamp             database_id     value 
   8552          71      2016-01-01 00:00:00             3          45325
   8550          105      2016-01-01 00:00:00            3          68

Однако я получаю следующую ошибку:

SQL Error [500310] [42601]: [Amazon](500310) Invalid operation: syntax error at or near "THEN" 
Position: 211;
  [Amazon](500310) Invalid operation: syntax error at or near "THEN" 
Position: 211;
  [Amazon](500310) Invalid operation: syntax error at or near "THEN" 
Position: 211;

Честно говоря, я новичок в SQL, поэтому я предполагаю, что я делаю что-то не так, как и яне знаю что это такое

...