以下是示例数据。我需要在不使用循环的情况下在t sql中复制此数据的3个副本,并将其作为一个结果集返回。这是不真实的示例数据。

42  South Yorkshire
43  Lancashire
44  Norfolk

编辑:我需要多份副本,我事先不知道我需要多少份副本,我必须根据日期决定。日期可能是1月1日至1月3日或1月1日至1月8日。

谢谢。

最佳答案

不知道更好,但这无疑更具创造力!您可以使用CROSS JOIN
编辑:输入一些代码来生成日期范围,您可以更改日期范围,#date中的行是您的乘数。

  declare @startdate datetime
, @enddate datetime
create table #data1 ([id] int , [name] nvarchar(100))
create table #dates ([date] datetime)


INSERT #data1 SELECT 42,  'South Yorkshire'
INSERT #data1 SELECT 43,  'Lancashire'
INSERT #data1 SELECT 44,  'Norfolk'


set @startdate = '1Jan2010'
set @enddate = '3Jan2010'

WHILE (@startdate <= @enddate)
BEGIN
INSERT #dates SELECT @startdate
set @startdate=@startdate+1
END


SELECT [id] , [name] from #data1 cross join #dates

drop table #data1
drop table #dates

关于sql - 在SQL中需要一个结果集的多个副本而不使用循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2334042/

10-12 20:31
查看更多