Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > перекрестный запрос


Автор: Lapochka 23.9.2008, 08:43
yerdnA , тебе удалось решить?

у меня подобный вопрос. нужно в MSSQL 2000 и 2005 (есть 2 версии. работаю на 2000, но могу так же пользоваться 2005).

Есть след таблица:
------------------------------------------------------------
  id_contact    |      id_strah      |          vid
------------------------------------------------------------
         1           |         1              |             1
------------------------------------------------------------
         1           |         2              |             3
------------------------------------------------------------
         2           |         3              |             2
------------------------------------------------------------
         3           |         4              |             4
------------------------------------------------------------
         3           |         5              |             1
------------------------------------------------------------
         1           |         6              |             2
------------------------------------------------------------
         4           |         7              |             2
------------------------------------------------------------
         6           |         8              |             3
------------------------------------------------------------

Небольшое описание: 
id_strah - ключевое поле
id_contact - 1 контакту соответствует несколько id_strah
vid - может принимать значения от 1 до 4

Нужно сделать:
------------------------------------------------------
                vid  |    1    |    2    |    3    |    4    
         -----------------------------------------------
 id_contact     |                id_strah 
------------------------------------------------------
          1          |    1    |     6   |     2   |         
------------------------------------------------------
          2          |          |     3   |          |        
------------------------------------------------------
          3          |     5   |          |          |     4    
------------------------------------------------------
          4          |          |     7   |          |     
------------------------------------------------------
          6          |          |          |    8    |     
------------------------------------------------------
Как перекрестный делается в Access я знаю.
А вот возможно ли подобное в  MSSQL для меня загадка. Но очень бы этого хотелось.


Хеееееееелп ми   smile smile 

Автор: skyboy 23.9.2008, 09:30

M
skyboy
Выкушено из темы Перекрестный запрос, что в разделе "MySQL"

Автор: Magnifico 23.9.2008, 10:32
для 2005 (как сделать для 2000   - не знаю!)
Код

declare @tbl table
(
 id_contact   int, 
 id_strah int,
  vid int
)
---------------------------
insert @tbl
select  1 ,1, 1 union all
select  1,2 ,  3 union all
select   2 , 3, 2 union all
select  3 ,4 , 4 union all
select  3 , 5,1 union all
select   1 , 6 ,2 union all
select   4  , 7,2 union all
select  6 , 8 , 3
----------------------------------------
select id_contact,[1],[2],[3],[4]
from @tbl  as t
pivot
(
max(id_strah)
FOR vid  IN
( [1], [2], [3], [4] )
) AS pvt

Автор: Lapochka 24.9.2008, 13:47
спасибочки =)

я немного по-другому сделала. с помощью вложенных запросов. но теперь еще 1 вариант знать буду  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)