如何实现下面的sql查询效果?请大家一定帮忙.

sunxiaoli 2002-09-09 01:19:43
表(cardno)中的记录
价格(price) 车牌号(cardno) 类别(catalog)
200 00001 鲁A
200 00002 鲁A
200 00004 鲁D
400 04003 鲁A
400 04004 鲁A
500 05005 鲁C
需要的查询结果
200 鲁A00001,鲁A00002,鲁D00004
400 鲁A04003,鲁A04004
500 鲁C05005
...全文
70 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wj_mailbox 2002-09-10
  • 打赏
  • 举报
回复
使用游标
byfq 2002-09-10
  • 打赏
  • 举报
回复
对,使用游标计算吧
hailulu_wang 2002-09-10
  • 打赏
  • 举报
回复
用游标最方便了,又不容易出错,用程序读出记录并将他们组合起来。
  • 打赏
  • 举报
回复
前面说的用交叉表的错了,SQL应是
SELECT price ,
catlog+cardno FROM cardno
GROUP BY price
对不起
  • 打赏
  • 举报
回复
如果你只是想用SELECT进行查询,试一下用
SELECT price,
list(catlog+carno) FROM cardno
GROUP BY price
order by price
  • 打赏
  • 举报
回复
用交叉表, 其中要SQL语句用
SELECT "cardno"."price",
"cardno"."carno"+"cardno"."catlog FROM "cardno"
GROUP BY "cardno"."price",
"cardno"."carno",
"cardno"."catlog"
fuxiangming 2002-09-09
  • 打赏
  • 举报
回复
--得到记录数,控制循环(当然也可以通过光标状态直接控制)
declare @@rs int
select @@rs=count(*) from cardno

--定义临时表保存结果
CREATE TABLE #tmp_info(
[price] [float] NULL ,
[info] [nvarchar] (40) NULL
) ON [PRIMARY]

--定义光标
declare my_cur cursor for
select * from cardno order by price

--声明当前处理Price,info
declare @@price_var_curr float,@@info_var_curr nvarchar(40)
--声明读光标值变量
declare @@price_var float,@@cardno_var nvarchar(20),@@catalog_var nvarchar(20)
open my_cur

--循环变量
declare @@i int
set @@i = 1
WHILE @@i<=@@rs
BEGIN
fetch my_cur into @@price_var,@@cardno_var,@@catalog_var
if @@price_var_curr=@@price_var
set @@info_var_curr =@@info_var_curr + ',' + @@catalog_var + @@cardno_var
else
begin
if @@i<>1
insert #tmp_info(price,info) values(@@price_var_curr,@@info_var_curr)
set @@price_var_curr=@@price_var
set @@info_var_curr = @@catalog_var + @@cardno_var
end
set @@i=@@i +1
END
CLOSE my_cur
insert #tmp_info(price,info) values(@@price_var_curr,@@info_var_curr)
--返回结果集
select * from #tmp_info
--删除临时表与光标
drop table #tmp_info
DEALLOCATE my_cur
sunxiaoli 2002-09-09
  • 打赏
  • 举报
回复
还是没有那种效果,
是不是该用临时表了?
Eric2000 2002-09-09
  • 打赏
  • 举报
回复
SELECT "cardno"."price",
"cardno"."carno"+"cardno"."catlog",
"cardno"."carno",
"cardno"."catlog"
FROM "cardno"
GROUP BY "cardno"."price",
"cardno"."carno",
"cardno"."catlog"
Eric2000 2002-09-09
  • 打赏
  • 举报
回复
1.分太少了,呵呵
2.应该分组
Select price,max(catlog)+max(cardno )
from cardno
group by price
order by price
freegzc 2002-09-09
  • 打赏
  • 举报
回复
我上面的方法不行,你用游标试试吧!
freegzc 2002-09-09
  • 打赏
  • 举报
回复
select catalog from cardno group by price
superneo 2002-09-09
  • 打赏
  • 举报
回复
select catalog form cardno grouby price


如果要在datawindow中显示,同样道理,对catalog进行分组。

1,108

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧