问题:假如有两个表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 */ |
最新相关文章
发表评论