2013-07-29 113 views
-1

喜的SQL Server專家,SQL Server行名稱增量

我有可能很容易對你最有問題,但我真的不知道如何解決它。我有兩張桌子,一張叫做網站,另一張叫米。網站表格可以有一個或多個米。當我這樣做加盟:

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 

我該怎麼辦這個問題?除了循環還有其他方法嗎?

+1

後所需的輸出爲新表 – peterm

回答

0

由於siteId = 1,插入時用@代替@SiteId。把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 
+0

請你檢查我的代碼,我編輯的?非常感謝。 –