找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 262|回复: 5

实例讲解一个不用游标就可以实现的问题

[复制链接]
发表于 2009-3-11 00:11:24 | 显示全部楼层 |阅读模式 IP:江苏扬州
问题:假如有两个表a(aid,bid),b(bid,bname,bprice)
a的字段表示顾客ID和商品ID,一个顾客可以买多种商品
现在a有记录:
1,10
1,11
1,12
2,10
2,13

b的字段表示商品ID,商品名称,商品价格
现在b有记录:
10,aaa,1
11,bbb,2
12,ccc,3
13,ddd,4

现在要实现显示顾客买的商品名称和价钱即字段:
aid,bname,bprice

但是同一个顾客只保留一个ID,其他为null
应当如何实现?
即将上面的记录实现为以下内容:
1,aaa,1
,bbb,2
,ccc,3
2,aaa,1
,ddd,4

以上这个示例如果不用游标有办法实现吗?
具体解决方法如下:
CREATE TABLE #T1(aid int ,bid int)
INSERT INTO #T1
SELECT 1,10 UNION ALL
SELECT 1,11 UNION ALL
SELECT 1,12 UNION ALL
SELECT 2,10 UNION ALL

SELECT 2,13
CREATE TABLE #T2(bid int,bname nvarchar(10),bprice int)
INSERT INTO #T2
SELECT 10,''aaa'',1 UNION ALL
SELECT 11,''bbb'',2 UNION ALL
SELECT 12,''ccc'',3 UNION ALL
SELECT 13,''ddd'',4
SELECT A.aid,B.bname,B.bprice INTO #T3 FROM #T1
AS A LEFT OUTER JOIN #T2 AS B ON A.bid=B.bid
DECLARE @aid int ,@lastaid int

UPDATE #T3 SET @aid=(CASE WHEN ISNULL(@lastaid,'''')
=aid THEN NULL ELSE aid END),aid=@aid,@lastaid=aid
SELECT * FROM #T3
DROP TABLE #T1,#T2,#T3

结果如下:
/*
1 aaa 1
NULL bbb 2
NULL ccc 3
2 aaa 1
NULL ddd 4
*/
发表于 2009-11-28 21:05:06 | 显示全部楼层 IP:上海
沙发...................
回复

使用道具 举报

发表于 2010-2-15 12:05:06 | 显示全部楼层 IP:香港
如此佳作,不顶说不过去,楼下的继续顶,直到把宇宙顶穿
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 13:16 , Processed in 0.261751 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表