大软件公司招聘时常考题之一。
设有一张表结构如:(日期,项目,内容) 数据如下 日期 项目 内容 2003/7/1 早餐 好 2003/7/1 中餐 不好 2003/7/1 晚餐 很好 2003/7/1 加餐 很好 2003/7/2 早餐 一般 2003/7/2 中餐 好 2003/7/2 晚餐 差 2003/7/3 早餐 一般 2003/7/3 中餐 好 (7.3半天班,没有晚餐) 2003/7/4 早餐 一般 2003/7/4 中餐 好 2003/7/4 晚餐 差 2003/7/5 早餐 一般 2003/7/5 中餐 好 2003/7/5 晚餐 差 如一个月有30天,而每天有早、中、晚、加餐四餐。这一张表记录了一天吃了些什么。 我现在要对一个月用餐情况进行统计,要求显示结构为: 日期 早餐 中餐 晚餐 加餐 2003/7/1 好 不好 很好 很好 2003/7/2 一般 好 差 2003/7/3 …… 试问我应用什么方法来得到这样的一张新表?一条 SQL 语句可以吗?存贮过程怎么做? 参考答案: select 日期, max(case when 项目=’早餐’ then ‘内容’ end) 早餐, max(case when 项目=’中餐’ then ‘内容’ end) 中餐, max(case when 项目=’晚餐’ then ‘内容’ end) 晚餐, max(case when 项目=’加餐’ then ‘内容’ end) 加餐 from 一张表 group by 日期 ————————————————– declare @sql varchar(8000) set @sql = ’select 日期’ select @sql = @sql + ‘max(case 项目 when ”’+项目+”’ then 内容 end) ‘+项目+’,’ from (select distinct 项目 from 一张表) as a select @sql = left(@sql,len(@sql)-1) + ‘ from 一张表 group by 日期’ exec(@sql) ————————————————– select a.’日期’,breakfast= (select b.’项目’ from table b where b.’项目’ = ‘早餐’ and b.’日期’ = a.’日期’), lunch= (select c.’项目’ from table c where c.’项目’ = ‘午餐’ and c.’日期’ = a.’日期’), supper = (select d.’项目’ from table d where d.’项目’ = ‘晚餐’ and d.’日期’ = a.’日期’) from table a order by ‘日期’ 附录:一个用ASP编写的可运行示例源代码下载: http://blog.why100000.com/wp-content/uploads/2010/07/cross.rar 作者:张庆(网眼) 西安 PHP 教育培训中心 2003-7-5 来自“网眼视界”:http://blog.why100000.com 作者微博:http://t.qq.com/zhangking “十万个为什么”电脑学习网:http://www.why100000.com
分享到:
相关推荐
在SQL中,可以使用SQL的CASE语句或PIVOT操作(某些数据库系统如Oracle支持)来实现交叉表查询。例如,如果我们有一个销售数据表,包含产品、地区和销售额信息,我们可能想要按地区展示每个产品的销售额。通过交叉表...
该方法的核心是开发一套适用于多种数据库平台的组件库,能够实现高效、灵活且可扩展的交叉表查询功能。具体实现步骤如下: 1. **定义查询组件**:设计一系列用于数据检索、处理和展示的组件。这些组件应该具有良好...
创建交叉表查询的实训可以通过统计各供应商所供各类商品的平均单价来实现。学生需要使用 ACCESS 2013 软件来创建交叉表,并设置行标题、列标题和值,然后对数据进行统计和分析。 六、创建交叉表查询的应用场景 ...
"在Sql Server数据库中利用存储过程实现动态交叉表.pdf" 本文主要讲述了在Sql Server数据库中利用存储过程实现动态交叉表的技术。交叉表是一种特殊的表格形式,它可以将数据按照某种规则进行转换和重新组织,以便更...
动态交叉表则是指在数据库查询过程中,根据实际运行时的动态条件,生成交叉表查询结果的技术。本文将探讨如何在SQL Server数据库中利用存储过程实现动态交叉表。 首先,我们需要理解交叉表的基本概念。在数据分析和...
### 数据库连接表查询详解 #### 一、交叉连接(CROSS JOIN) **定义与特点:** 交叉连接(CROSS JOIN)是一种特殊的连接方式,它返回的是参与连接的两个表的所有可能组合,即两个表的笛卡尔积。这种连接不包含任何...
5. **Entity Framework**:如果你使用Entity Framework作为ORM,可以通过创建数据库查询并使用GroupBy和Select来实现交叉表。虽然EF不直接支持Pivot,但可以通过编写SQL查询或者利用linq-to-entities的灵活性来达到...
SQL Server交叉表的客户端实现方案主要探讨的是如何在SQL Server数据库系统中,通过客户端应用程序来实现交叉表查询,这是在数据分析和报表展示中常见的需求。交叉表,又称透视表,可以将原始数据按照多个维度进行...
数据库多表连接查询详解 连接查询是关系数据库管理系统中的一种重要查询方式,它允许用户从多个表中检索数据,并将它们组合成一个结果集。连接查询的基本思想是通过连接运算符在多个表之间建立关系,从而实现数据的...
总之,掌握Access的交叉表查询和操作查询是数据库管理的关键技能,它们能帮助用户高效地组织、分析和维护数据,从而提高工作效率,支持决策制定。通过理论学习和实际操作,可以逐步提升在数据库管理方面的专业素养。
在“Access数据库技术及应用实训查询Ⅱ——交叉表查询和操作查询”这个实训中,主要涵盖了两种重要的查询类型:交叉表查询和操作查询,这些都是进行高效数据处理的关键技能。 **交叉表查询**,也称为透视表查询,...
通过以上知识点,我们可以根据具体需求和所使用的数据库系统,编写出适用于各种场景的动态交叉表查询。提供的"动态交叉表.sql"和"动态交叉表2.sql"文件可能包含了不同实现方式的示例代码,学习和理解这些代码可以...
交叉表查询也是数据库的一个特点。 例如: select 表1.组名, (select 表1.成员姓名 from 表2 b where 表1.成员1id=表2.成员id) as 成员1id, (select 表1.成员姓名 from 表2 b where 表1.成员2
在数据库管理中,有时我们需要以交叉表的形式展示数据,以便更直观地分析和报告。在Oracle环境下,可以利用SQL查询语句,通过JOIN操作来动态生成交叉表。这种方法结合多个表的数据,形成新的视图或报表,满足用户按...
3. 查询:Access提供了多种查询类型,如选择查询、交叉表查询、操作查询和参数查询,可用于检索、筛选和分析数据。在学生信息查询系统中,用户可能需要根据学号、姓名、班级等条件查询特定学生的信息。 4. 窗体:...
本实例将探讨如何在Delphi环境中利用数据库组件进行交叉表查询,以帮助新手更好地理解和应用这一功能。 首先,我们要了解交叉表查询的基本概念。交叉表,也称为透视表,它能够将数据以行列形式重新排列,通常用于...
2. **交叉表查询**:用于展示字段的汇总值,如总计、计数和平均值,以行列形式呈现。 3. **参数查询**:在运行查询时,会弹出对话框让用户输入准则,提供交互式数据筛选。 4. **操作查询**:包括删除、更新、追加...
《范式下的Oracle数据库设计及其动态交叉表的生成》这篇文献主要探讨了在数据库设计中遵循范式的重要性,以及如何在Oracle数据库中实现动态交叉表的生成。文章以提高数据库性能和数据完整性为目标,深入剖析了数据库...