首页 新闻 会员 周边

sql 读取问题

0
[待解决问题]

一,地域表

Id 地域
1 中国
2 美国
3 英国
4 法国
....

二,产品表

产品Id 地域Id 产品名称
1 1 产品1
2 2 产品2
3 3 产品1
4 1 产品3
......

条件 1。产品在地域表中销售地域id来自地域表,如果在本区域销售则为Yes否则为No,2.地域表的值不固定
现在读成

  产品名称 中国 美国 英国 法国 ....
  产品1 Yes NO Yes No  
  产品2 No Yes No No
  产品3 Yes No No No

yangyueming的主页 yangyueming | 初学一级 | 园豆:2
提问于:2010-11-15 13:35
< >
分享
所有回答(5)
0

1)用游标。速度不高,数据量一大,很占用内存。

2)这个是我写的另外一个方法,可以参考一下

沉默的糕点 | 园豆:1786 (小虾三级) | 2010-11-15 15:59
0

Create Table Area
(
 Area_id int,
 Area_Name varchar(50)
)
create table Product
(
 product_id int,
 area_id int,
 product_Name varchar(50)
)
insert Into Area values(1,'中国');
insert Into Area values(2,'美国');
insert Into Area values(3,'英国');
insert Into Area values(4,'法国');
Insert into Product values(1,1,'产品');
Insert into Product values(2,2,'产品');
Insert into Product values(3,3,'产品');
Insert into Product values(4,1,'产品');
select t.产品名称,case t.中国 WHEN t.产品名称 THEN 'YES' ELSE 'NO' END 中国
,case t.美国 WHEN t.产品名称 THEN 'YES' ELSE 'NO' END 美国
,case t.英国 WHEN t.产品名称 THEN 'YES' ELSE 'NO' END 英国
,case t.法国 WHEN t.产品名称 THEN 'YES' ELSE 'NO' END 法国
from (select Area.area_Name,Product.product_Name,Product.product_Name 产品名称 from Area join Product ON Area.area_id =Product.area_id)t0
pivot(max(t0.Product_Name) for t0.area_Name in ([中国],[美国],[英国],[法国]))t;

第一滴血0605 | 园豆:250 (菜鸟二级) | 2010-11-15 17:31
0

yangyueming根据你提的问题我用随笔写了出来 链接

追索 | 园豆:625 (小虾三级) | 2010-11-23 16:46
0
select Product.产品名称 
,max(case Product.area_id WHEN 1 THEN 1 ELSE null END ) 中国 
,max(case Product.area_id WHEN 2 THEN 1 ELSE null END ) 美国
,max(case Product.area_id WHEN 3 THEN 1 ELSE null END ) 英国
,max(case Product.area_id WHEN 4 THEN 1 ELSE null END ) 法国
from  Product
group by Product.产品名称 
不喜欢0/1自己再case一下
colys | 园豆:239 (菜鸟二级) | 2010-11-26 12:39
0

这个问题好难哦。领教了!

jianhua100 | 园豆:200 (初学一级) | 2010-11-26 16:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册