我正在尝试使用tsql实现以下功能
我桌上的内容看起来像这样
A B C 3
我想拥有的是
A B C 1
A B C 1
A B C 1
根据数量列4 ..将其拆分。
不确定要使用的功能。
感谢任何帮助。
答案 0 :(得分:4)
您可以使用数字表加入,然后很简单:
SELECT t.*
FROM dbo.Numbers n
INNER JOIN Table1 t
ON n.n <= t.Col4
ORDER by n.n
如小提琴中所示,您可以通过以下方式创建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)
;