Я хотел бы вычислить тот же столбец с именем value
в одной таблице с именем table_name
:
CREATE TABLE IF NOT EXISTS Table_Name(
Code VARCHAR(20) COMMENT 'Code',
Date COMMENT 'Date',
Value DECIMAL(25,2) COMMENT 'Value',
Remark STRING COMMENT 'Value type, "111, 222, or 333 etc"',
Предполагается, что мне нужно вычислить "(тип значения = 111 или 222 или 333) / (тип значения = 444) "между 20180201 и 20180228, и я использую SQL-запрос, как показано ниже:
select t.code,t.date,t.remark,t1.value/t2.value as val
from table_name t
right join (
select sum(t.value) fzqsz, t.code from table_name t
WHERE remark = '111' OR remark = '222' OR remark = '333'
group by t.code,t.date
) t1 on t.code = t1.code
left join (
select sum(t.value) value,t.code from table_name t
WHERE remark = '444'
group by t.code,t.date
) t2 on t1.code = t2.code
-- if I put below line in `SQL query` I get nothing(0 results)
-- where t.code='00001' and t.date >='20180201' and date <= '20180228'
Я выбираю только замечание =" 111 или 222 или 333 ", я не знаю, почему все замечания («555 и 666»), я получил результаты, как показано ниже:
code date remark val
1 00001 2018-02-25 00:00:00.0 111 0.00002929
2 00001 2018-02-25 00:00:00.0 222 0.00002977
3 00002 2018-02-25 00:00:00.0 333 0.00002917
4 00003 2018-02-25 00:00:00.0 444 0.00002987
3 00001 2018-02-25 00:00:00.0 555 0.00002917
4 00002 2018-02-25 00:00:00.0 666 0.00002987
Правильно ли выполнен SQL-запрос? Я уверен, что есть некоторые проблемы с моим запросом SQL. Очень ценят за любые советы.