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
/*
nameprice
-----------------
001169
001169
001169
001169
001169
002213
002213
002213
*/
if OBJECT_ID('tempdb..#temp', 'u') is not null drop table #temp;
go
create table #temp( [产品名称] varchar(100), [数量] float, [价格] INT);
insert #temp
select '001','5.0','169' union all
select '002','3.0','213'
--SQL:
select a.[产品名称], a.价格
from #temp A
INNER JOIN master..spt_values B
ON A.数量 > B.number
AND B.type = 'p'
/*
产品名称价格
001169
001169
001169
001169
001169
002213
002213
002213
*/