TSQL基于列的重复行

时间:2014-09-18 15:36:39

标签: sql sql-server tsql

我正在尝试使用tsql实现以下功能

我桌上的内容看起来像这样

A B C 3

我想拥有的是

A B C 1
A B C 1
A B C 1

根据数量列4 ..将其拆分。

不确定要使用的功能。

感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

您可以使用数字表加入,然后很简单:

SELECT  t.*
FROM dbo.Numbers n
INNER JOIN Table1 t
  ON n.n <= t.Col4
ORDER by n.n

Demo

如小提琴中所示,您可以通过以下方式创建number table

SELECT TOP (1000000) n = CONVERT(INT, ROW_NUMBER() OVER (ORDER BY s1.[object_id]))
INTO dbo.Numbers
FROM sys.all_objects AS s1 CROSS JOIN sys.all_objects AS s2
OPTION (MAXDOP 1);

CREATE UNIQUE CLUSTERED INDEX n ON dbo.Numbers(n)
-- WITH (DATA_COMPRESSION = PAGE)
;