2013-07-29 1 views
-1
эксперты

Привет SQL Server,SQL строка Имя сервера прибавка

У меня есть проблема, которая может быть легко для большинства из вас, но я действительно не знаю, как ее решить. У меня есть 2 таблицы, один называется сайтами, а один называется метрами. Таблица сайтов может иметь один или несколько метров. Когда я это соединение:

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 

Я попробовал следующий цикл, но я не знаю, как написать это в выбранном заявлении после вставки:

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

Поскольку сайтId = 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 
+0

Не могли бы вы проверить мой код, который я редактировал? Огромное спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^