SELECT A.code, .......... A.C_VALUE1 CVALUE1, A.C_VALUE2 CVALUE2, B.C_VALUE3 CVALUE3 from (select t.code, t.c_value1, to_char(wm_concat(t.c_value2)) c_value2 from t_ext t where t.c_data_type = 'RELA' group by t.code, t.c_value1) a left join t_ext b on a.code = b.code and a.c_value1 = b.c_value1 and b.c_data_type = 'RELA'
同事针对上面SQL提出问题:html
原本数据库是一个c_port_code 一个 c_value1 一个 c_value2存的,
如今想按照把 同一个 c_port_code 和 c_value1 的 c_value2合并为新的c_value2,
可是不想把c_value3和d_date放到分组里面,又须要这两个字段的值,致使重复数据了,该怎么去重呀sql
在a 的结果集,用了group by ,其实至关于将表“降维”了。假如原来1000行,如今分组后结果集变为100行了。
在b 的结果集,没用group by ,它仍是原来的维度。
当它们left join时,确定会再扩展回来呀,升维成为1000行。数据库
再解释一下维度:
好比 商品表是一维表,
商品名称: 价格,产地,类别,备注echarts
商品日销售表是二维表:
商品名称,日期: 购买人,购买数量,结帐口......spa
若是你对“商品日销售表" group by 一下。 就至关于降维,体如今主键列减小了
商品名称 : 总购买数量.net
前面你让两个维度不一样的表进行join,确定引发某个表的扩展呀!设计
同事说他写了2个SQL来获取结果。code
不少系统都会设计一个数据源的模块,每每止于”取到结果集“,其实拿到结果集只是第一步,更重要的是要反应出来结果集的行间的一个关系来。比较重要就是主键列,维度这些概念。htm
ORACLE自己也有维度的概念,我尚未把维度的概念理解透了,它直接关系着数据的汇总效率,数据视图的”上钻、下钻“,在echart里有上钻下钻功能,我不太清楚它是怎么维护数据关系的,有时间了要研究一下。blog
http://blog.csdn.net/wanghai__/article/details/6609193
Echarts文档:
http://echarts.baidu.com/option.html#series-line.dimensions