Перекрестный / сводный запрос с типом данных изображения в SQL Server 2008

#sql #sql-server #image #pivot #crosstab

#sql #sql-server #изображение #сводный #перекрестная таблица

Вопрос:

Мне нужно выполнить перекрестный / сводный запрос в SQL Server, используя столбцы всех типов данных varchar и один тип данных изображения. Я создал хранимую процедуру, которая объединяет серию таблиц в этом формате. «B» единственный элемент, который может быть связан с данными изображения. Если поле ДАННЫХ для «B» пустое, то для этой строки также есть пустые IMAGEDATA.

   OBJID    CONTAINERID    ELEMENT   DATA     IMAGEDATA   
  1        11             A         a123     NULL
  1        12             A         aa123    NULL
  1        11             B         b123     0XFFD8FFE       
  1        12             B         bb123    0XFFD8FFE       
  1        11             C         c123     NULL      
  

Затем я использую сводный запрос. В идеале таблица должна выглядеть следующим образом:

   OBJID    CONTAINERID    A       B       C      IMAGEDATA   
  1        11             a123    b123    c123   0XFFD8FFE       
  1        12             aa123   bb123          0XFFD8FFE        
  

Проблема в том, что поля данных изображения не могут быть повернуты, сгруппированы, преобразованы и т.д…Я пытался преобразовать изображение в varchar из двоичного файла, но это дает мне тарабарщину.

Ограничения:

    1. «ЭЛЕМЕНТЫ» являются динамическими, поэтому количество столбцов для сводной таблицы постоянно меняется. (т.Е. Это * могло * пройти весь путь от А до Я.)
    2. Поля должны использоваться в отчете SSRS, поэтому мне нужно поддерживать тип данных изображения
    3. Я не могу использовать какой-либо другой язык разработчика (.NET и т.д.)

Есть ли какой-либо другой возможный способ сделать это?

Ответ №1:

Похоже, что нет другого способа сделать это, кроме как вручную добавить / создать столбец IMAGEDATA в качестве последнего шага. Вот мое решение:

Я использовал две отдельные таблицы: одну сводную таблицу без столбца IMAGEDATA и другую таблицу, аналогичную первой, отображаемой в вопросе выше. После того, как я создал запросы для сводной таблицы, я поместил ее во временную таблицу, добавил столбец с типом данных ИЗОБРАЖЕНИЯ и произвел сопоставления для заполнения столбца IMAGEDATA.

Кажется простым решением, но его вряд ли можно обслуживать или оно неэффективно. Я не сильно полагаюсь на сопоставление IMAGEDATA с другими полями, а что, если я решу, что IMAGEDATA будут иметь больше ЭЛЕМЕНТОВ?