我需要一个数据表中的摘要信息,其中每个项目都有多个ID,这些IDMap到查找表中可用的唯一真实名称。
我有一个可行的解决方案,它依赖于用新列更改数据表:http://sqlfiddle.com/#!17/1f224/7
有没有办法在不改变数据表的情况下获得按real_name和region分组的单位总和?
数据表(region_data)的结构为:
| 项目代码|短代码|区域|单位|
| - ------| - ------| - ------| - ------|
| B2513 - 70|布拉什|东|十八|
| 编号C2692 - 59|范围|东|一百|
| 编号C2692 - 59|范围|北|九十四|
| 编号A6152 - 94|块|南部|七十|
| 编号C2692 - 59|范围|西|四十|
| 小行星A4891 - 91|题目|东|六十五|
| ...|...|...|...|
| ...|...|...|...|
item_code是指向代码的链接。
查找表(item_lookup)为:
| 项目代码|真实姓名|
| - ------| - ------|
| B2513 - 70|烘箱|
| 编号C2692 - 59|烘箱|
| 编号F6940 - 84|音乐|
| 小行星A4891 - 91|音乐|
| E6031-十一|音乐|
| 二〇 〇七年二十三日|旅馆|
| 第6228 - 48号|旅馆|
| 编号F3679 - 48|梯子|
| 编号E3587 - 36|梯子|
| 编号A6152 - 94|梯子|
在本例中,有10个唯一item_codesMap到4个唯一项目(基于real_names)
我的工作示例需要3个步骤:
更改region_data以添加real_name列
-- # add column to region_data
ALTER TABLE region_data
ADD COLUMN rn text;
使用item_lookup中的real_name更新区域数据rn列
-- # add real_name as rn to region_data from item_lookup
update
region_data rd
set
rn = lu.real_name
from
item_lookup lu
where
rd.item_code = lu.item_code;
创建所需的摘要输出
-- # create the summary table by real_name, region
select
rn,
region,
sum(units)
from
region_data
group by
rollup(rn, region)
同样,是否有一种方法可以在查询中建立item_codes和real_name之间的链接,而不依赖于修改region_data表?
1条答案
按热度按时间jv2fixgn1#
就像我发布的,我想出了这个工作:
我有一个选择中没有item_code的块。