| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1439 人关注过本帖
标题:急!这个表如何创建?
只看楼主 加入收藏
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 

create table 客户表(
客户ID int,
客户姓名 varchar(50)
)

insert into 客户表 values(1,'张三')
insert into 客户表 values(2,'李明')
insert into 客户表 values(3,'小强')
insert into 客户表 values(4,'小花')
insert into 客户表 values(5,'小明')
insert into 客户表 values(6,'小李')

create table 产品表(
产品ID int,
产品名 varchar(50),
厂商 varchar(128)
)

insert into 产品表 values (1001,'CPU','bc-cn')
insert into 产品表 values(1002,'显卡','bc-cn')
insert into 产品表 values(1003,'内存','bc-cn')
insert into 产品表 values(1004,'硬盘','bc-cn')
insert into 产品表 values(1005,'主板','bc-cn')
insert into 产品表 values(1006,'光驱','bc-cn')

create table 订单表(
客户ID int,
产品ID int,
购买日期 datetime
)

insert into 订单表 values(1,1002,'2007-2-20')
insert into 订单表 values(1,1005,'2007-3-20')
insert into 订单表 values(4,1001,'2007-4-20')
insert into 订单表 values(4,1003,'2007-6-20')
insert into 订单表 values(4,1004,'2007-7-20')

--假设你现在有这些表.数据..
--现在查询统计.


declare @sql varchar(8000),@head varchar(4000)
set @sql='select 购买日期=convert(char(10),购买日期,120)'
select @sql=@sql+',max(case when 产品名='+quotename(产品名,'''')+' then 产品表.产品ID end)'+quotename(产品名)
from 产品表 group by 产品名
set @sql=@sql+' from 订单表,产品表 where 订单表.产品ID=产品表.产品ID group by 购买日期'

exec (@sql)

drop table 客户表,产品表,订单表


我的msn: myfend@
2007-11-12 21:32
缘吇弹
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:43
帖 子:3038
专家分:27
注 册:2007-7-2
收藏
得分:0 
good job

Repeat  Life=Study;Until (death);
2007-11-12 21:51
baijian710
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-11-11
收藏
得分:0 
这个订单表作的好,把两个表联系起来了。
2007-11-13 07:55
球球
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:1146
专家分:265
注 册:2005-11-28
收藏
得分:0 
产品表里有个产品的型号,字符串型,如何把产品型号查出来?

好累
2007-11-14 11:32
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 

11楼不是改用了max函数了吗?.

create table 客户表(
客户ID int,
客户姓名 varchar(50)
)

insert into 客户表 values(1,'张三')
insert into 客户表 values(2,'李明')
insert into 客户表 values(3,'小强')
insert into 客户表 values(4,'小花')
insert into 客户表 values(5,'小明')
insert into 客户表 values(6,'小李')

create table 产品表(
产品ID int,
产品名 varchar(50),
产品型号 varchar(10),
厂商 varchar(128)
)

insert into 产品表 values (1001,'CPU','1141','bc-cn')
insert into 产品表 values(1002,'显卡','1adf','bc-cn')
insert into 产品表 values(1003,'内存','hgcv','bc-cn')
insert into 产品表 values(1004,'硬盘','1qer','bc-cn')
insert into 产品表 values(1005,'主板','1hh','bc-cn')
insert into 产品表 values(1006,'光驱','114f1','bc-cn')

create table 订单表(
客户ID int,
产品ID int,
购买日期 datetime
)

insert into 订单表 values(1,1002,'2007-2-20')
insert into 订单表 values(1,1005,'2007-3-20')
insert into 订单表 values(4,1001,'2007-4-20')
insert into 订单表 values(4,1003,'2007-6-20')
insert into 订单表 values(4,1004,'2007-7-20')

--假设你现在有这些表.数据..
--现在查询统计.


declare @sql varchar(8000),@head varchar(4000)
set @sql='select 购买日期=convert(char(10),购买日期,120)'
select @sql=@sql+',max(case when 产品名='+quotename(产品名,'''')+' then 产品表.产品型号 end)'+quotename(产品名)
from 产品表 group by 产品名
set @sql=@sql+' from 订单表,产品表 where 订单表.产品ID=产品表.产品ID group by 购买日期'

exec (@sql)

drop table 客户表,产品表,订单表

/*

购买日期 CPU 光驱 内存 显卡 硬盘 主板
---------- ---------- ---------- ---------- ---------- ---------- ----------
2007-02-20 NULL NULL NULL 1adf NULL NULL
2007-03-20 NULL NULL NULL NULL NULL 1hh
2007-04-20 1141 NULL NULL NULL NULL NULL
2007-06-20 NULL NULL hgcv NULL NULL NULL
2007-07-20 NULL NULL NULL NULL 1qer NULL

*/


我的msn: myfend@
2007-11-16 19:05
球球
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:1146
专家分:265
注 册:2005-11-28
收藏
得分:0 
太谢谢了.今天上午我也做出来了,不过不是通过数据库来做的.是用的循环对比替换.嗯,还是你的效率高些.

好累
2007-11-17 13:44
球球
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:1146
专家分:265
注 册:2005-11-28
收藏
得分:0 
我是又查出产品表,然后通过循环对比替换:
foreach (DataRow dr2 in dt2.Rows)
{
for (int i = 1; i < dt.Columns.Count; i++)
{
foreach (DataRow dr in dt.Rows)
{
if (dr[i].ToString() == dr2["prodId"].ToString())
{
dr[i] = dr2["prodType"].ToString();
}
}
}
}
呵呵,想了一上午.不过还是采用你的方法直接查出来.谢谢!

好累
2007-11-17 13:59
快速回复:急!这个表如何创建?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039562 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved