`
tony_jingzhou
  • 浏览: 3254 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

求助,这种sql怎么优化啊?生成报表格式数据?

 
阅读更多
    今天做查询统计的时候遇到了一个问题,就是要查出类似数据报表的数据。数据库里面查数据不是我需要的,需要自己组装数据,觉得麻烦。
例如:
    SELECT
	count(*)shuliang,
	j.zhuangtaibh,
	a.zhuanlilx
    FROM
	aj_ajxxb a left JOIN aj_ztls j ON a.wofangjh = j.wofangjh
         AND j.zhuangtaibh <> ''
         AND a.zhuanlilx IN(1, 2, 3)
    GROUP BY
	j.zhuangtaibh,
	a.zhuanlilx


而我想要的专利类型1,2,3都在一行,这时就需要将列转行?
我的方法是:
SELECT
 temp_xx.zhuangtaibh 状态编号,
 CASE WHEN temp_xx.zhuanlilx = '1' THEN shuliang ELSE '' END AS '发明',
 CASE WHEN temp_xx.zhuanlilx = '2' THEN shuliang ELSE '' END AS '新型',
 CASE WHEN temp_xx.zhuanlilx = '3' THEN shuliang ELSE '' END AS '外观'
 FROM
  (
    SELECT
	count(*)shuliang,
	j.zhuangtaibh,
	a.zhuanlilx
    FROM
	aj_ajxxb a
	JOIN aj_ztls j ON a.wofangjh = j.wofangjh
	AND j.zhuangtaibh <> ''
	AND a.zhuanlilx IN(1, 2, 3)
	GROUP BY
	    j.zhuangtaibh,
             a.zhuanlilx
   )AS temp_xx


成为这样的数据,还是不符合要求
想到group_concat()函数分组能够和合并行数据,正好满足我的要求:
SELECT
	t1.zhuangtaibh,
	group_concat(faming SEPARATOR ' ')AS 发明,
	group_concat(xinxing SEPARATOR ' ')AS 新型,
	group_concat(waiguan SEPARATOR ' ')AS 外观
FROM(
     SELECT 
       temp_xx.zhuangtaibh,
CASE WHEN temp_xx.zhuanlilx = '1' THEN shuliang ELSE ''END AS 'faming',
CASE WHEN temp_xx.zhuanlilx = '2' THEN shuliang ELSE ''END AS 'xinxing',
CASE WHEN temp_xx.zhuanlilx = '3' THEN shuliang ELSE ''END AS 'waiguan'
     FROM(
       SELECT
	count(*)shuliang,
	j.zhuangtaibh,
	a.zhuanlilx
	FROM
	  aj_ajxxb a
	    JOIN aj_ztls j ON a.wofangjh = j.wofangjh
	     AND j.zhuangtaibh <> ''
              AND a.zhuanlilx IN(1, 2, 3)
	     GROUP BY
	     j.zhuangtaibh,
	     a.zhuanlilx
	)AS temp_xx
	)AS t1
GROUP BY
	t1.zhuangtaibh


这样基本我的要求,可是怎么优化Sql???请大神帮忙想想。
分享到:
评论

相关推荐

    plsql801+注册码生成器

    6. **报表生成**:可以生成关于数据库结构和性能的报告,帮助优化数据库设计。 标签“plsql 801 注册码生成器”再次强调了这个话题的重点,即针对PLSQL Developer 8.0.1版本的非法注册工具。 在提供的压缩包子文件...

    [精选]会计学用友软件安装项导_ppt.pptx

    8. **配置报告服务**:用于生成报表,根据需求进行配置。 9. **配置共享特性**:例如安装Management Tools,便于管理和监控数据库。 10. **安装规则检查**:安装程序会检查系统环境,确保满足所有依赖项。 11. **...

    access2000绿色免安装版

    5. **创建报表**:自动生成数据汇总,支持数据分析和决策制定。 6. **设计宏**:录制和执行一系列操作,实现自动化任务,简化工作流程。 7. **编写VBA代码**:利用Visual Basic for Applications,可以编写更复杂的...

    绿色中文版PLSQL-解压后直接可用

    6. **报表和图表**:生成各种报表和图表,以直观的方式展示数据或性能指标。 使用绿色中文版PLSQL Developer,你可以无需安装就能快速开始数据库开发工作,这在共享工作、多环境切换或者教学场景中特别实用。只需...

    plsql10.0.1.1694+注册机

    4. **数据操作**:直接在工具中执行SQL查询,导出或导入数据,方便数据处理。 5. **项目管理**:组织和管理多个数据库项目,方便团队协作。 6. **报表生成**:自定义报告,便于分析和共享数据库信息。 尽管PLSQL ...

    PLSQL绿色版

    7. **报表和导出**:可以生成数据库对象的DDL脚本,便于备份或在不同环境中复制对象,同时支持将查询结果导出为多种格式。 8. **版本控制集成**:与常见的版本控制系统(如Git、SVN)集成,方便进行代码版本管理和...

    vfp6.0系统免费下载

    在您求助 Microsoft 产品支持服务之前,请先查阅这张列表。 若想打印这些附注,请从“文件”菜单中选择“打印”命令。此文档分为以下四部分: -------------------------------------------------------------------...

    PHP 进销存源代码 下载

    5. **报表生成**:提供各类统计报表,如进出货汇总表、库存报表、利润报表,帮助管理层掌握公司运营状况。 对于这个PHP源码,开发者可能需要关注以下技术点: - **数据库设计**:进销存系统通常需要与MySQL、...

    完整word版-5超市管理系统软件文档用户操作手册.doc

    - **报表输出**:能够生成各种类型的报表,如销售报告、库存报告等,为管理层提供决策支持。 #### 3.4 求助查询 - **在线帮助**:提供详细的在线帮助文档,帮助用户解决常见的问题。 - **技术支持**:通过电话、...

    MySql Group By对多个字段进行分组的实现方法

    4. 有助于数据分析和报表生成,支持更复杂的数据统计需求。 在实际应用中,GROUP BY语句是数据库查询不可或缺的一部分,特别是在处理大量数据和需要进行多维度分析的场景下。理解并熟练掌握GROUP BY的使用,能够...

Global site tag (gtag.js) - Google Analytics