2011-06-01 60 views
0

我需要在SQL Server中使用所有varchar數據類型和一個圖像數據類型的列執行交叉表/數據透視查詢。我創建了一個存儲過程,以這種格式連接一系列表。 「B」是可以鏈接到圖像數據的唯一元素。如果「B」的數據字段爲空白,那麼該行也有空白的IMAGEDATA。交叉表/數據透視查詢與SQL Server 2008中的圖像數據類型

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.「元素」是動態的,所以列的用於樞軸表的數量在不斷變化。 (即它可以* *一路從A到Z)
    2場是在SSRS報告中使用,所以我需要保持圖像數據類型
    3.我不能使用任何其他開發語言(.NET等)。

是否有任何其他可能的方式來做到這一點?

回答

0

因此,似乎除了手動添加/創建IMAGEDATA列作爲最後一步之外,沒有其他辦法可以做到這一點。這是我的解決方案:

我使用了兩個單獨的表:一個數據透視表沒有IMAGEDATA列,另一個表類似於上面問題中顯示的第一個表。一旦我對數據透視表進行了查詢,我將它放入臨時表中,添加一個包含IMAGE數據類型的列,並將匹配項填入IMAGEDATA列。

看起來像一個簡單的解決方案,但它幾乎不可維護也不高效。我並不是很依賴IMAGEDATA與其他領域的匹配,如果我決定更多ELEMENTS將擁有IMAGEDATA,該怎麼辦?