请问这样显示结果该如何写语句?
原信息
qid cid pid ptid pbid ptName pbName Model comName pName QuotePrice QuoteTime ModPerson
11 2 8 9 10 mp4 爱国者 F335 九天成通 爱国者视觉王 5000.0 2007-10-18 15:22:49.000 Admin
10 1 8 9 10 mp4 爱国者 F335 九洲嘉园 爱国者视觉王 1000.0 2007-10-18 15:22:38.000 Admin
5 3 8 9 10 mp4 爱国者 F335 测试公司 爱国者视觉王 1500.0 2007-10-18 15:21:03.000 Admin
3 3 6 6 10 数码相机 爱国者 DC-V800 测试公司 爱国者数码相机 500.0 2007-10-18 15:22:01.000 Admin
7 2 6 6 10 数码相机 爱国者 DC-V800 九天成通 爱国者数码相机 8000.0 2007-10-18 15:21:43.000 Admin
6 1 6 6 10 数码相机 爱国者 DC-V800 九洲嘉园 爱国者数码相机 1000.0 2007-10-18 15:21:35.000 Admin
9 3 7 8 9 mp3 纽曼 F99 测试公司 纽曼之音 1000.0 2007-10-18 15:22:28.000 Admin
8 1 7 8 9 mp3 纽曼 F99 九洲嘉园 纽曼之音 500.0 2007-10-18 15:22:16.000 Admin
4 2 7 8 9 mp3 纽曼 F99 九天成通 纽曼之音 1000.0 2007-10-18 15:20:54.000 Admin
修改后变成
qid cid pid ptid pbid ptName pbName pName Model comName1 Price1 comName2 Price2 comName3 Price3 QuoteTime ModPerson
1 2 8 9 10 mp4 爱国者 视觉王 F335 九洲嘉园 1000.0 测试公司 1500.0 九天成通 5000.0 2007-10-18 15:22:49.000 Admin
2 3 6 6 10 数码相机 爱国者 视觉王 DC-V800 测试公司 500.0 九天成通 1000.0 九洲嘉园 8000.0 2007-10-18 15:22:49.000 Admin
....
合并条件是 同产品 同条件 同日期 price是最低价格取3个 最低的放到price1 然后是2和3,排序按时间 然后是产品名称,请问能应该怎么实现啊。
------解决方案--------------------SQL code
--用此例的方法生成一个子表.
有一表
a b c
7 aa 153
9 aa 152
6 aa 120
8 aa 168
5 bb 159
7 bb 179
8 bb 149
9 bb 139
6 bb 169
对b列中的值来分类排序并分别加一序号,形成一新表
px a b c
1 6 aa 120
2 9 aa 152
3 7 aa 153
4 8 aa 168
1 9 bb 139
2 8 bb 149
3 5 bb 159
4 6 bb 169
5 7 bb 179
declare @tab table(a int,b varchar(2),c int)
insert @tab values(7,'aa',153)
insert @tab values(9,'aa',152)
insert @tab values(6,'aa',120)
insert @tab values(8,'aa',168)
insert @tab values(5,'bb',159)
insert @tab values(7,'bb',179)
insert @tab values(8,'bb',149)
insert @tab values(9,'bb',139)
insert @tab values(6,'bb',169)
select * from @tab
select px=(select count(1) from @tab where b=a.b and c <a.c)+1 , a,b,c from @tab a
order by b , c
px a b c
----------- ----------- ---- -----------
1 6 aa 120
2 9 aa 152
3 7 aa 153
4 8 aa 168
1 9 bb 139
2 8 bb 149
3 5 bb 159
4 6 bb 169
5 7 bb 179
(所影响的行数为 9 行)
在上面例中我们看到,以B分类排序,C是从小到大,如果C从大到小排序,即下面结果:
px a b c
1 8 aa 168
2 9 aa 1