• 主页
  • 基础类
  • 应用实例
  • 新技术前沿

新手的一个问题:关于select查询的

wwy830916 2005-03-23 11:51:02
我的表有下面几个字段:
ID 流水号
BookSum 卖的书的总数(一天)
BookID 书的ID号
WeekID 星期几(用1,2,3,4,5,6,7表示,1为Monday,2为...)
ClientID 客户ID
剩下的字段无关紧要.

我现在要做的是: 客户一周内每天购买一本书的数量

用SQL查出如下表(倒...不会画表):
ClientID BookID Sunday Monday Tuesday Wednesday Thursday Friday Saturday

...全文
77 点赞 收藏 4
写回复
4 条回复
wwy830916 2005年03月23日
还有别的方法吗?
回复 点赞
jinjazz 2005年03月23日
交叉表

--建立测试环境
Create Table 表(year varchar(10),name varchar(10),value varchar(10))
--插入数据
insert into 表
select '2002','a','1' union
select '2002','b','4' union
select '2002','c','5' union
select '2003','a','7' union
select '2003','b','5' union
select '2003','c','4' union
select '2004','a','4'
select * from 表
--测试语句
DECLARE @SQL VARCHAR(8000)
SET @SQL='SELECT name'
SELECT @SQL= @SQL+
',sum(CASE WHEN year = ''' + year + ''' THEN value else 0 END) [' + year + ']'
FROM (SELECT DISTINCT year FROM 表) A
SET @SQL=@SQL+' FROM 表 GROUP BY name'
exec (@SQL)


--删除测试环境
Drop Table 表
/*
name 2002 2003 2004
a 1 7 4
b 4 5 0
c 5 4 0

*/
回复 点赞
menong 2005年03月23日

select ClientID,BookID, sum(Sunday) as Sunday...
from (
select ClientID,BookID,Sunday=case when WeekID=7 then BookSum else 0 end,
....
from table
) a
group by ClientID,BookID
回复 点赞
wwy830916 2005年03月23日
能把
--测试语句
写一下吗?
回复 点赞
发动态
发帖子
MS-SQL Server
创建于2007-09-28

1.4w+

社区成员

25.3w+

社区内容

MS-SQL Server相关内容讨论专区
社区公告
暂无公告