Как создать новую таблицу, в которой столбцы основаны на ключах другой таблицы? - PullRequest
0 голосов
/ 06 декабря 2011

В SQL Server 2008 у меня есть следующие таблицы:

CREATE TABLE samples (SampleID int, Time datetime, RawData image)

CREATE TABLE parameters (ParamID, SampleID int, ParamType uniqueidentifier, Value float)

В этом сценарии мое приложение обрабатывает данный образец (из таблицы «примеров»), извлекает несколько различных параметров и сохраняет их втаблица параметров.

Я хотел бы создать временную таблицу, в которой каждый параметр (определенный конкретным ParamType) является столбцом, а в каждой строке определены значения всех параметров, извлеченных из каждого данного образца.Проблема в том, что количество и имя столбцов результата зависят от значений таблицы параметров.

Как это можно сделать?

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Я не совсем уверен, что вы спрашиваете, но это должно быть близко к тому, что вы хотите:

DECLARE @columns VARCHAR(MAX)

SELECT @columns = 
      COALESCE(@columns + ',[' + CAST(p.ParamType as varchar(50)) + ']'
          ,'[' + CAST(p.ParamType as varchar(50)) + ']')
FROM 
(
    SELECT DISTINCT ParamType FROM parameters
) as p

DECLARE @query VARCHAR(MAX)
SET @query = '
    SELECT * FROM
    (
        SELECT SampleID, ParamType, Value FROM parameters
    ) as tbl3
    PIVOT
    (
        AVG(Value) FOR ParamType in (' + @columns + ')
    ) AS tblResults'

EXECUTE (@query)

Здесь он работает на SEDE.

0 голосов
/ 06 декабря 2011

Я думаю, вам нужен сводный запрос

Попробуйте:

select * from
(
    select SampleID,Value,ParamType from parameters 
) AS params
pivot (max(value) for ParamType in ([Type1],[Type2])) as Result
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...