您好 SQL Server 专家,
我有一个对你们大多数人来说可能很容易的问题,但我真的不知道如何解决它。我有两张桌子,一张叫做 Sites,一张叫做 Meters。Sites 表可以有一个或多个仪表。当我这样做时加入:
SELECT * FROM Sites
JOIN Meters
WHERE Sites.ID = Meters.SiteID
WHERE Sites.ID = 1
我得到以下信息:
ID SiteName SiteID MeterName
1 Site1 1 Meter1
1 Site1 1 Meter2
1 Site1 1 Meter3
现在,我需要将这两个表中的数据复制到新表中......我已经有了代码,但我不确定如何执行以下操作:我想为 @MeterName 做一个循环,以便它循环只要站点中有仪表,就可以为仪表分配不同的名称!在下面的代码中,它将为我不想要的所有仪表提供 Meter 1。
Declare @MeterName varchar(20) = 'Meter 1'
@SiteID int = 1
INSERT INTO METER (MeterName, SiteID)
SELECT @MeterName, @SiteID
我尝试了以下循环,但我不确定如何在插入后的 select 语句中编写它:
DECLARE @Name varchar (20) = 'Meter',
@MeterNumber int = 1,
@TheMetername varchar(20)
WHILE (@MeterNumber <= (SELECT COUNT(*) FROM Sites
WHERE SiteID = 1)
BEGIN
SET @TheMetername = @Name + ' ' + cast(@MeterNumber as varchar(20))
PRINT @Name + ' ' + cast(@MeterNumber as varchar(20))
SET @MeterNumber = @MeterNumber + 1
END
INSERT INTO METER (MeterName, SiteID)
SELECT @MeterName, @SiteID
我该如何解决这个问题?除了循环还有其他方法吗?