SQL 在不添加新列的情况下在 SUM 查询中创建视图或过程?
SQL Create view or procedure in a SUM query without adding new column?
假设我在 table_name_a
中有一些样本数据如下:
code val remark date
-----------------------------------
1 00001 500 111 20191108
2 00001 1000 222 20191107
3 00002 200 111 20191108
4 00002 400 222 20191108
5 00001 200 333 20191108
6 00001 400 444 20191108
我有一个 SQL 查询如下:
SELECT t.code,
sum(CASE WHEN t.remark IN ('111', '222', '333')
THEN t.value ELSE 0 END) AS sum_123
FROM table_name_a t
WHERE t.code='00001' and t.date='20191108'
GROUP BY t.code
输出如下:
code sum_123
------------------
1 00001 1100
现在我想在 SQL 查询(Oracle)上创建一个视图或过程,我们不想要一个新列,是否可以让 sum_123
存储到 remark
列?假设我使用下面的 SQL 查询
SELECT t.code, t.value
FROM table_name_a t
WHERE t.remark='sum_123' and t.code='00001' and t.date='20191108'
GROUP BY t.code
如果我使用上面的 SQL 查询,我的预期输出如下:
code val remark date
------------------------------------------
1 00001 1100 sum_123 20191108
是否可以将 create view/procedure save remark
和 val
与 sum_123
和 1100 的 value/result
一起使用?非常感谢您的任何建议。
这是你想要的吗?
select t.code,
sum(case when t.remark IN ('111', '222', '333') then t.value else 0 end) as val,
'sum_123' as remark,
date
from table_name_a t
where t.code = '00001' and t.date = '20191108'
group by t.code, date;
假设我在 table_name_a
中有一些样本数据如下:
code val remark date
-----------------------------------
1 00001 500 111 20191108
2 00001 1000 222 20191107
3 00002 200 111 20191108
4 00002 400 222 20191108
5 00001 200 333 20191108
6 00001 400 444 20191108
我有一个 SQL 查询如下:
SELECT t.code,
sum(CASE WHEN t.remark IN ('111', '222', '333')
THEN t.value ELSE 0 END) AS sum_123
FROM table_name_a t
WHERE t.code='00001' and t.date='20191108'
GROUP BY t.code
输出如下:
code sum_123
------------------
1 00001 1100
现在我想在 SQL 查询(Oracle)上创建一个视图或过程,我们不想要一个新列,是否可以让 sum_123
存储到 remark
列?假设我使用下面的 SQL 查询
SELECT t.code, t.value
FROM table_name_a t
WHERE t.remark='sum_123' and t.code='00001' and t.date='20191108'
GROUP BY t.code
如果我使用上面的 SQL 查询,我的预期输出如下:
code val remark date
------------------------------------------
1 00001 1100 sum_123 20191108
是否可以将 create view/procedure save remark
和 val
与 sum_123
和 1100 的 value/result
一起使用?非常感谢您的任何建议。
这是你想要的吗?
select t.code,
sum(case when t.remark IN ('111', '222', '333') then t.value else 0 end) as val,
'sum_123' as remark,
date
from table_name_a t
where t.code = '00001' and t.date = '20191108'
group by t.code, date;