您好SQL Server专家,
我有一个问题对大多数人来说可能很容易,但我真的不知道如何解决它。我有2个表,一个叫做Sites,一个叫做meter。 “站点”表可以包含一个或多个计量表。当我这样做时加入:
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执行循环,以便只要站点中有米,它就会循环并为米分配不同的名称!在下面的代码中,它将为我提供所有我不想要的仪表的仪表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
我该怎么办?除了循环之外还有其他方法吗?
答案 0 :(得分:0)
由于siteId = 1,插入时将@SiteId替换为1。将INSERT语句放在WHILE循环
中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))
INSERT INTO METER (MeterName, SiteID) VALUES( @MeterName, 1)
SET @MeterNumber = @MeterNumber + 1
END