当前位置: 代码迷 >> Sql Server >> sql server查询复制的行记录,该如何处理
  详细解决方案

sql server查询复制的行记录,该如何处理

热度:66   发布时间:2016-04-24 10:20:51.0
sql server查询复制的行记录
例如表product有如下数据:
    pname      pcount    
     面包              3
     牛奶              4

需要查询出来的结果为:
 pname      
   面包 
   面包  
   面包 
   牛奶
   牛奶
   牛奶 
   牛奶
 
------解决方案--------------------
----------------------------------------------------------------
-- Author  :DBA_HuangZJ(發糞塗牆)
-- Date    :2014-07-17 11:24:11
-- Version:
--      Microsoft SQL Server 2012 - 11.0.5058.0 (X64) 
-- May 14 2014 18:34:29 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据:[product]
if object_id('[product]') is not null drop table [product]
go 
create table [product]([pname] varchar(4),[pcount] int)
insert [product]
select '面包',3 union all
select '牛奶',4
--------------开始查询--------------------------

SELECT  pname 
FROM    ( SELECT    pname ,
                    REPLICATE(CAST(pcount AS VARCHAR(100)) + ',', pcount) pcount
          FROM      product
        ) a ,
        master..spt_values
WHERE   number >= 1
        AND number <= LEN(pcount)
        AND type = 'p'
        AND SUBSTRING(',' + pcount, number, 1) = ','






----------------结果----------------------------
/* 
pname
-----
面包
面包
面包
牛奶
牛奶
牛奶
牛奶
*/

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

WITH a1 (pname,pcount) AS
(
SELECT '面包',3 UNION ALL
SELECT '牛奶',4
)
SELECT a.pname
FROM a1 a
JOIN master.dbo.spt_values b ON b.number BETWEEN 1 AND a.pcount
WHERE b.Type='P'
  相关解决方案