当前位置: 代码迷 >> Sql Server >> 高分求一句有难度的SQL语句,该如何解决
  详细解决方案

高分求一句有难度的SQL语句,该如何解决

热度:31   发布时间:2016-04-24 10:44:59.0
高分求一句有难度的SQL语句
表结构和数据如下:
表: T
字段:   SN   QTY 
数据:   A       5
               B       3
               C       2

想通过一句SQL查询语句达到以下结果数据

A-1
A-2
A-3
A-4
A-5
B-1
B-2
B-3
C-1
C-2

请教各位高手!!               
------解决方案--------------------
IF EXISTS(SELECT NAME FROM sysobjects AS s WHERE NAME = 'test')
DROP TABLE test
GO

CREATE TABLE test (sn CHAR(1) , qty INT)
GO
INSERT INTO test  
SELECT 'A' , 5 UNION ALL
SELECT 'B' , 3 UNION ALL
SELECT 'C' , 2 

GO
--執行查詢
SELECT test.sn , a.number + 1 FROM MASTER..spt_values AS a , test  WHERE [TYPE] = 'P' AND  a.number < test.qty 

--結果
/*
 sn   
---- -----------
A    1
A    2
A    3
A    4
A    5
B    1
B    2
B    3
C    1
C    2

(10 row(s) affected)

 */

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

CREATE TABLE #testTable
    (
      Sn VARCHAR(10) NOT NULL ,
      Qty INT NOT NULL
    );
GO

INSERT  INTO #testTable
VALUES  ( 'A', 5 ),
        ( 'B', 3 ),
        ( 'C', 2 );
GO

SELECT  *
FROM    #testTable;
GO

-- 使用辅助的序列表来完成,这里用master..spt_values来替代;
SELECT  tt.Sn + '-' + CAST(sv.number AS VARCHAR)
FROM    #testTable AS tt
        CROSS JOIN master..spt_values AS sv
WHERE   sv.number BETWEEN 1 AND tt.Qty
        AND sv.type = 'P'
GO

  相关解决方案