2014-02-28 50 views
1

我有一個表有200個記錄,所以我需要顯示所有200行爲200列這是不可能寫在樞軸IN()部分的所有200條記錄,因爲當我插入201st記錄在表中它的列也應該顯示。如何在sql查詢中以列的形式顯示所有記錄?

select * from Table_Name 

返回200行

,所以我需要在其他查詢顯示200列

SELECT * FROM 
(
select RecordName from Table_Name 
) AS T 
PIVOT (Max(RecordName) FOR MiscMasterName IN (Record1,Record2)) AS T2 

給出2列 像明智的,我需要200列,如果我加201個記錄 和無論我在哪裏執行查詢,我在插入新記錄後都會獲得201列....

+0

可能[T-SQL樞軸的重複之後進行清理?從行值創建表列的可能性](http://stackoverflow.com/questions/2922797/t-sql-pivot-possibility-of-creating-table-columns-from-row-values) – NickyvV

回答

0

您需要執行動態數據透視。事情是這樣的:

測試數據:

CREATE TABLE Table_Name(MiscMasterName VARCHAR(200),RecordName VARCHAR(200)) 
INSERT INTO Table_Name 
VALUES 
    ('Record1','aValue'), 
    ('Record2','SomeValue') 

查找列

DECLARE @cols VARCHAR(MAX) 
SET @cols=STUFF 
(
    (
     SELECT 
      ',' +QUOTENAME(MiscMasterName) 
     FROM 
      Table_Name 
    FOR XML PATH('') 
    ) 
,1,1,'') 

聲明並執行動態sql

DECLARE @query NVARCHAR(4000)= 
N'SELECT 
* 
FROM 
(
    SELECT 
     RecordName, 
     MiscMasterName 
    from 
     Table_Name 
) AS T 
PIVOT (Max(RecordName) FOR MiscMasterName IN ('[email protected]+')) AS T2' 
EXECUTE(@query) 

自己

DROP TABLE Table_Name 

輸出

Record1 Record2 
aValue SomeValue