Office中国论坛/Access中国论坛

标题: 交叉查询 [打印本页]

作者: image326    时间: 2003-1-24 18:32
标题: 交叉查询
如何在SQL里编写交叉查询的方法,请高手指点!
作者: zhengjialon    时间: 2003-1-25 02:10
搜索一下旧贴吧,多的是。搜索不到,SQL的联机帮助里也有例子。


[此贴子已经被zhengjialon于2003-1-24 18:09:53编辑过]


作者: zhuyiwen    时间: 2003-1-27 00:10
这个问题确定不容易!
作者: jiek    时间: 2003-2-9 02:55
不支持
作者: zhengjialon    时间: 2003-2-9 17:05
一个SQL中交叉查询的简单例子(去年做的很长时间没碰了,改一个简单的):
第一步:建立两个表
表名:《员工履历表-履历信息》
包含字段:员工工号、姓名、部门都是文本型
表名:《就餐类型》
包含字段:员工工号、日期、用餐(限定为三个值:早餐、中餐、晚餐)除日期是日期型外其余都是文本型。

第二步:在SQL查询分析器中拷入以下内容并运行(或存为存储过程):

USE [改为你的SQL数据库名]
IF EXISTS(SELECT OBJECT_ID('员工就餐次数'))
DROP PROC 员工就餐次数
GO
CREATE PROC dbo.员工就餐次数 @请输入起始日期 DATETIME,@请输入终止日期 DATETIME
AS
SELECT J.员工工号,L.姓名,L.部门,
     COUNT(CASE J.用餐 WHEN '早餐' THEN '早餐' END) AS 早餐,
     COUNT(CASE J.用餐 WHEN '中餐' THEN '中餐' END) AS 中餐,
     COUNT(CASE J.用餐 WHEN '晚餐' THEN '晚餐' END) AS 晚餐
FROM DBO.就餐类型 AS J LEFT OUTER JOIN DBO.[员工履历表-履历信息] AS L ON J.员工工号=L.员工工号
WHERE J.日期 BETWEEN @请输入起始日期 AND @请输入终止日期
GROUP BY J.员工工号,L.姓名,L.部门
GO

EXEC 员工就餐次数
'2002-1-1','2002-5-1'





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3