2015-01-05 39 views
0

enter image description here查詢或查看的動態列

請幫幫我。我如何在查詢中顯示動態列。我想要一個觀點。 在此先感謝


enter image description here 我Out是這樣的。

select SectionID, 
     Column1, Column2, Column3 
from 
(
    select S.SectionID,ColumnDataName, ColumnDescription, 
    row_number() over(partition by S.SectionID 
         order by SectionTableColumnID) seq 
    from dbo.SectionTableColumn vt 
    INNER JOIN dbo.Section S ON S.SectionID = vt.SectionID 



) d 
pivot 
(
    max(ColumnDescription) 
    for ColumnDataName in (Column1, Column2, Column3) 
) piv; 
+1

你真的使用MySQL和SQL Server和Postgresq? – jarlh

+0

閱讀關於'pivot' – Bharadwaj

+0

不,我只使用SQL Server 2008. –

回答

1

無法使用動態數量的列創建視圖。您需要指定ColumnDataName的所有值才能使其工作。

你需要轉動你的結果,這裏有一個例子,你如何創建自己的看法:

CREATE TABLE 
    xxx(SectionID int, ColumnDescription varchar(10), ColumnDataName varchar(10)) 

INSERT xxx values(2, 'dgj', 'column1') 
INSERT xxx values(2, 'ash', 'column2') 
INSERT xxx values(8, 'lkhsdh', 'column2') 

go 

CREATE VIEW v_xxx as 
SELECT SectionId, [column1],[column2],[column3] 
FROM xxx 
PIVOT 
(min(ColumnDescription) 
FOR ColumnDataName 
in([column1],[column2],[column3]) 
)AS p 

go 

SELECT * FROM v_xxx 

結果:

SectionId column1 column2 column3 
2   dgj  ash  NULL 
8   NULL  lkhsdh NULL