Ряды в столбцах - PullRequest
0 голосов
/ 16 июня 2011

У меня есть эта таблица:

Id Kind
1  MODEL
1  MOTOR
2  MODEL
2  MOTOR
3  MOTOR
4  MODEL

И я хочу вставить в другую таблицу:

IdModel IdMotor
1       1
1       2
1       3
2       1
2       2
2       3
4       1
4       2
4       3

Я знаю, как сделать это с помощью курсоров, но это действительно очень медленно. Я пробовал с Union, но, похоже, сегодня не мой лучший день!

Я также знаю, что это можно сделать в SQL 2005 с помощью pivot, но я должен сделать это с SQL Server 2000.

Любой гуру Transact-SQL с хорошим и быстрым запросом?

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 16 июня 2011

Похоже, это будет работать:

INSERT Table2
SELECT model.id, motor.id
FROM
    Table model,
    Table motor
WHERE
    model.Kind = 'MODEL'
    and motor.Kind = 'MOTOR'
0 голосов
/ 16 июня 2011
INSERT INTO AnotherTable
SELECT  [IdModel]
        , [IdMotor]
FROM    (        
          SELECT  [IdModel] = ID
          FROM    ATable
          WHERE   Kind = 'MODEL'
        ) md
        CROSS APPLY
        (
          SELECT  [IdMotor] = ID
          FROM    ATable
          WHERE   Kind = 'MOTOR'
        ) mt          
...