Как получить записи по имени столбца с помощью курсоров - PullRequest
2 голосов
/ 21 сентября 2011

Я реха и работаю в базе данных.Я более свежая только с прошлых 2 месяцев, я работаю на сервере sql.

У меня есть запрос, который у меня есть 2 таблицы. Например, таблица businesstype содержит идентификатор, businesstype и местоположение на основе местоположения, я буду получатьdata.thas fine.and вторая таблица похожа на employee, а столбцы - id, name и businesstype.so мой вопрос для каждого businesstype. В конечном итоге я получу записи из таблицы employee:

1, sathish,softwar 4, pushpa, Software 2, ramesh, Electronics 4, rajesh, Electronics

Я решаю этот вопрос с помощью объединений, операторов и подзапросов. Но мне нужно решение этого запроса с помощью курсоров.

Я написал следующим образом:

1) ВЫБЕРИТЕ ID, Имя, BusinessType ОТ сотрудника, ГДЕ BusinessType в (выберите BusinessType из Employee) порядок по BusinessType desc

2) выберите ID,Имя, BusinessType от Employee, где существует (выберите BusinessType из Employee)

3) выберите @Location = Местоположение из @BusinessTypeTemp

выберите ID, BusinessType, Location из BusinessType, где Location = @ Location

DECLARE @TempEmployeeInfo varchar(500)
DECLARE @pos        int,
         @nextpos    int,
        @nextRecpos int, 
        @valuelen   int

/ * создание временной таблицы для вставки типов адресов * /

CREATE TABLE  #EmployeeInfo (BusinessType nvarchar(80) )
SELECT  @TempEmployeeInfo =   BusinessType FROM @EmployeeTemp

/* Код для проверки разделителя: ',' и сохранения во временную таблицу * /

SELECT @pos = 0, @nextpos = 1


WHILE @nextpos > 0
BEGIN


  SELECT @nextpos = charindex(',', @TempEmployeeInfo, @pos + 1)
  SELECT @valuelen = CASE WHEN @nextpos > 0
                          THEN @nextpos
                          ELSE len(@TempEmployeeInfo) + 1
                     END - @pos - 1
INSERT #EmployeeInfo(BusinessType)  VALUES (convert(nvarchar, substring(@TempEmployeeInfo, @pos+1, @valuelen)))
  SELECT @pos = @nextpos
END




    SELECT @Count = count(BusinessType) from Employee WHERE BusinessType IN (SELECT BusinessType FROM #EmployeeInfo)
        PRINT @count


    IF(@Count<>0)
        BEGIN


            select ID,Name,BusinessType from Employee

            WHERE BusinessType IN (SELECT BusinessType FROM #EmployeeInfo)
            order by BusinessType desc


       END
    ELSE
         BEGIN
         SELECT 0 as ReturnID
         END

Но они не хотят этого, они хотят получить результат, используя только курсоры. А также я хочу отобразить обаТаблица результатов в одном SP.

Так что, пожалуйста, кто-нибудь, помогите мне.Пожалуйста, отправьте ответы срочно, потому что сегодня мой последний день, чтобы решить эту проблему.

Rekha

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...