SQL查询:主从表 报表方式显示
来源:互联网 发布:php.ini 编码设置 编辑:程序博客网 时间:2024/06/05 23:53
--测试表与测试数据CREATE TABLE test_main (id INT,value VARCHAR(10),PRIMARY KEY(id));-- 创建测试子表.CREATE TABLE test_sub (id INT,main_id INT,value VARCHAR(10),PRIMARY KEY(id));-- 插入测试主表数据.INSERT INTO test_main(id, value) VALUES (1, 'ONE');INSERT INTO test_main(id, value) VALUES (2, 'TWO');-- 插入测试子表数据.INSERT INTO test_sub(id, main_id, value) VALUES (1, 1, 'A');INSERT INTO test_sub(id, main_id, value) VALUES (2, 1, 'B');INSERT INTO test_sub(id, main_id, value) VALUES (3, 1, 'C');INSERT INTO test_sub(id, main_id, value) VALUES (4, 2, 'D');INSERT INTO test_sub(id, main_id, value) VALUES (5, 2, 'E');INSERT INTO test_sub(id, main_id, value) VALUES (6, 2, 'F');
要求:主从表关联的时候,主表仅仅第一条记录显示,后面相同的情况下,不显示
默认情况下
---------- ----------
ONE A
ONE B
ONE C
TWO D
TWO E
TWO F
希望查询结果能变为
---------- ----------
ONE A
B
C
TWO D
E
F
思路:
首先, 根据主表的数据 分组显示 ROW_NUMBER
然后,仅仅显示 ROW_NUMBER = 1 的主表数据, 其他的主表数据不显示
实现
第一步 根据主表的数据 分组显示 ROW_NUMBER
SELECT
test_main.value,
test_sub.value,
ROW_NUMBER() OVER (PARTITION BY test_main.value ORDER BY test_sub.value)
FROM
test_main,
test_sub
WHERE
test_main.id = test_sub.main_id
value value
---------- ---------- --------------------
ONE A 1
ONE B 2
ONE C 3
TWO D 1
TWO E 2
TWO F 3
第二步 仅仅显示 ROW_NUMBER = 1 的主表数据, 其他的主表数据不显示
SELECT
CASE WHEN
ROW_NUMBER() OVER (PARTITION BY test_main.value ORDER BY test_sub.value) = 1 THEN test_main.value
ELSE ''
END AS Main_Value,
test_sub.value
FROM
test_main,
test_sub
WHERE
test_main.id = test_sub.main_id
执行结果
Main_Value value
---------- ----------
ONE A
B
C
TWO D
E
F
- SQL查询:主从表 报表方式显示
- 使用ActiveReport for .net 进行报表开发-显示主从表
- SQL查询相关技术-3.更改显示报表行项目
- 企业财务报表查询方式
- 报表数据查询SQL
- SQL报表横向显示,交叉报表显示
- EasyUI - 实现DataGrid 主从表显示 DetailView实现方式
- 润乾报表发布参数报表和查询报表方式
- 使用ActiveReport for .net 进行报表开发(四)—显示主从表
- 使用ActiveReport for .net 进行报表开发(四)—显示主从表
- 使用ActiveReport for .net 进行报表开发(四)—显示主从表
- SQL 按月份查询报表
- SQL 语句的多表查询方式
- 主从表的报表(简单范例)
- 水晶报表主从表的关联
- 水晶报表中的主从表结构
- 水晶报表中的主从表结构
- 水晶报表中的主从表结构
- JS 框架 :后台系统完整的解决方案BUI
- js实现图片翻看(缩略图)1
- java实现常见的排序(冒泡、插入、选择、快排)
- linux-2.6.26下开发marvell 88w8686 wifi驱动 (转)
- junit 单元测试
- SQL查询:主从表 报表方式显示
- 文件结构体struct file(Linux 2.6.23内核)
- camera 专业术语
- apue-setjmp,longjmp
- Maven3入门篇
- 黑马程序员---多态的应用以及object类介绍
- openURL(注意backgroundTask 的学习)
- 突然感悟的一句话!佛是对的!
- wcf服务引用-List<T> to T[]