100 分求一条 SQL 查询语句 (100分)

  • 主题发起人 主题发起人 PENGS
  • 开始时间 开始时间
P

PENGS

Unregistered / Unconfirmed
GUEST, unregistred user!
有这样一个数据表

名称 规格 价格
1 A 12.00
1 B 13.00
1 C 14.00

我想通过 SQL 语句查询后得出

名称 规格A 规格B 规格C
1 12.00 13.00 14.00

请高手指教
 
select * from 表名 where 名称= group by 名称

是不是你要的功能啊
 
不对
select * from 表名 where 名称= group by 名称
返回的结果与我在上面提出的结果不同
如果问题这么简单我出不要麻烦大家啦
 
如果在ACCESS中可以这样

TRANSFORM SUM(价格)
SELECT 名称 FROM TABLE1 GROUP BY 名称
PIVOT 规格

如是其它数据库就比较麻烦了
 
select 名称,价格=规格a where 价格=12.00 from table
将输出
名称 规格A
1 12.00
你所要求的是无法实现的
因为不是一个字段
 
QuickSilver,
按你所说的输出的将是这样的
名称 规格 规格 规格
1 12.00 13.00 14.00
 
靠,有这么变态的需求?
 
感谢 QuickSilver
你的方法可取,但是我是在 SQL 中使用, ACCESS 中适用于本地。
我合你50分
 
我在sql server 2000:
select
名称,
sum(case 规格 when 'A' then 价格 else 0 ) as 规格A,
sum(case 规格 when 'B' then 价格 else 0 ) as 规格B,
sum(case 规格 when 'C' then 价格 else 0 ) as 规格C
from .........
 
我在sql server 2000:
select
名称,
sum(case 规格 when 'A' then 价格 else 0 END) as 规格A,
sum(case 规格 when 'B' then 价格 else 0 END) as 规格B,
sum(case 规格 when 'C' then 价格 else 0 END) as 规格C
from .........
GROUP BY 名称
 
用TXQuery吧,它可以满足你的要求.
 
TO:tang,
但事实上查询时并不知道 规格 的 值


名称 规格 价格
1 A 12.00
1 B 13.00
1 C 14.00
2 A 10.00
2 X 11.00
2. Y. 13.00

名称 规格A 规格B 规格C 规格X 规格Y
1 12.00 13.00 14.00
2 10.00 11.00 13.00

TO: QuickSilver

返回的列中中能包括一个主键字段

如果是这样如何做


名称 单位 规格 价格
1 a A 12.00
1 a B 13.00
1 a C 14.00

不知行否???? 多谢
 
设置方法:
http://www.wellknow.net/showthread.php?s=c251213617f64ed01f9795b25d3da61b&threadid=19
 
TO:tang,
但事实上查询时并不知道 规格 的 值


名称 规格 价格
1 A 12.00
1 B 13.00
1 C 14.00
2 A 10.00
2 X 11.00
2. Y. 13.00


=================
SELECT DISTINCT 规格 FROM ....
根据结果再用程序产生一条SQL查询语句


 
如果单用来显示的话,可以用交叉报表啊。树列为名称,横列为规格,并且名称规格可以
不用加限制。否则规格多了,你能case 的完么?
 
在SQL server 中可以这样:
select 名称 ,sum(a1) 规格A,sum(a2) 规格B,sum(a3) 规格C from (
select case 规格 when 'A' then 价格 else 0 end a1,
case 规格 when 'B' then 价格 else 0 end a2,
case 规格 when 'C' then 价格 else 0 end a3,
名称 from 数据表) TempTable Group By 名称
 
用存储过程
我看需要用游标把规格先取出来,然后在选
 
table your_table(
fl_id,
fl_type,
fl_value
);

select a.fl_id, a.fl_value, b.fl_value, c.fl_value
from your_table a, your_table b, your_table c
where a.fl_id = b.fl_id
and b.fl_id = c.fl_id;
and a.fl_type='type a'
and b.fl_type='type b'
and c.fl_type='type c';

I think this can help you


 
后退
顶部