Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 подскажите плз вариант решения проблемы  [new]
ther
Member

Откуда:
Сообщений: 839
тема как перевести результирующий набор в строку уже обсасывалась..но у меня проблема в том что если я допишу прогу раньше чем в наших подразделениях обновятся с 7 на 2005 то конструкции типа pivot и FOR XML работать не будут..посему вопрос..какой есть вариант перевода результирующего набора в строку который был бы совместим со старенькой 7?
то есть примерно из
idtypevalue
1hdd80
1cpuintel
2hdd40
2cpuamd

получить
id hddcpu
180intel
240amd


спасибо
22 июн 11, 09:31    [10851637]     Ответить | Цитировать Сообщить модератору
 Re: подскажите плз вариант решения проблемы  [new]
Guf
Member

Откуда: Новосибирск
Сообщений: 659
ther,
как-то так
IF OBJECT_ID('tempdb..#MyTable') IS NOT NULL
    DROP TABLE #MyTable
GO
CREATE TABLE #MyTable(
    id INT
   ,[type] VARCHAR(10)
   ,[value] VARCHAR(10)
)
INSERT INTO #MyTable(id, type, value)
          SELECT 1, 'hdd', '80'
UNION ALL SELECT 1, 'cpu', 'intel'
UNION ALL SELECT 2, 'hdd', '40'
UNION ALL SELECT 2, 'cpu', 'amd'  
 

SELECT q.id, MAX(q.hdd), MAX(q.cpu)
    FROM (SELECT id AS id
                ,(CASE [type]
                      WHEN 'hdd' THEN [value]
                      ELSE NULL
                  END) AS hdd
                ,(CASE [type]
                      WHEN 'cpu' THEN [value]
                      ELSE NULL
                  END) AS cpu
              FROM #MyTable
          ) q
    GROUP BY q.id
22 июн 11, 09:50    [10851757]     Ответить | Цитировать Сообщить модератору
 Re: подскажите плз вариант решения проблемы  [new]
ther
Member

Откуда:
Сообщений: 839
спасибо большое...вроде то что надо
22 июн 11, 10:04    [10851847]     Ответить | Цитировать Сообщить модератору
 Re: подскажите плз вариант решения проблемы  [new]
ther
Member

Откуда:
Сообщений: 839
все хорошо..но блина если
1 hdd 80
1 cpu intel
1 hdd 20
2 hdd 40
2 cpu amd

то все плохо...попробовал написать функцию где в курсоре собирались винты в строку типа "80/20" но время выполнения запроса для 500 записей возросло почти до 2 секунд((
22 июн 11, 11:35    [10852570]     Ответить | Цитировать Сообщить модератору
 Re: подскажите плз вариант решения проблемы  [new]
ther
Member

Откуда:
Сообщений: 839
все отбой..заменил на
	declare @result varchar(100) 

  
SELECT @Result = isnull(@Result,'') + isnull([element],'')+'\' FROM dbo.getpc 
where [type]=5 and id=@PCID 

	return LEFT(@result, LEN(@result)-1)
и жизнь наладилась..относительно
22 июн 11, 11:43    [10852662]     Ответить | Цитировать Сообщить модератору
 Re: подскажите плз вариант решения проблемы  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
ther
все отбой..заменил на
	declare @result varchar(100) 

  
SELECT @Result = isnull(@Result,'') + isnull([element],'')+'\' FROM dbo.getpc 
where [type]=5 and id=@PCID 

	return LEFT(@result, LEN(@result)-1)
и жизнь наладилась..относительно
FAQ прочитали наверно?
22 июн 11, 11:45    [10852681]     Ответить | Цитировать Сообщить модератору
 Re: подскажите плз вариант решения проблемы  [new]
ther
Member

Откуда:
Сообщений: 839
в смысле в функции заменил курсор на этот запрос выбора нескольких хардов
22 июн 11, 11:46    [10852692]     Ответить | Цитировать Сообщить модератору
 Re: подскажите плз вариант решения проблемы  [new]
ther
Member

Откуда:
Сообщений: 839
ага..полезно иногда
22 июн 11, 12:07    [10852910]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить