日期:2014-05-17  浏览次数:20585 次

SQL大神们,接分了,重复显示某行数据功能
大概如下,因为公司要打印帖子,就是小标签,让我在系统里查询出来产品+数量,然后打印,一开始我还以为一个产品打印一笔,结果说数量有多少就打印多少笔。。。

表结构大概如下:

表A:
产品名称   数量   价格
  001      5.0    169
  002      3.0    213

效果如下:

产品名称   价格
001        169
001        169
001        169
001        169
001        169
002        213
002        213
002        213

------解决方案--------------------

WITH a1 (item_no,qty,price)AS
(
SELECT '001',5,169 UNION all
SELECT '002',3,213
)
,a2 AS
(
SELECT item_no,qty,price,1 n FROM a1
UNION ALL
SELECT item_no,qty,price,n+1
FROM a2
WHERE n<qty
)
SELECT item_no,price FROM a2
ORDER BY item_no
OPTION(MAXRECURSION 0)

------解决方案--------------------
create table #ta(name varchar(10),num int,price int)
insert into #ta
select '001',5.0,169
union all select '002',3.0,213

select * from #ta

select a.name,a.price
from 
(select a.* ,rn=ROW_NUMBER() over(partition by name order by getdate()) 
from #ta a,(select top 10 number from master..spt_values where type='P' and number>0)b
)a
inner join #ta b on a.rn<=b.num and a.price=b.price and a.name=b.name
drop table #tb

/*
name price
-----------------
001 169
001 169
001 169
001 169
001 169
002 213
002 213
002 213
*/

------解决方案--------------------