2014-05-23 91 views
0

我有一個表在數據庫中,如:如何使用行數據爲列,具有可變行數據

enter image description here

而且我想要的數據輸出,如:

enter image description here

FeeName列值不固定,即另一種費用也可以存在。

請幫忙解決它。

尋找您寶貴的解決方案。

謝謝...

+0

搜索SO或網絡上「數據透視表」。 – Turophile

+0

另外,如果你要扭轉這樣的數據來獲得你想要的答案,你的數據結構可能是不正確的你的 要求。 – Turophile

+0

可能重複的[SQL Server PIVOT示例?](http://stackoverflow.com/questions/24470/sql-server-pivot-examples) –

回答

3

正如Turophile所說,這種數據格式表明您的數據設計有問題。

不過,如果你需要做到這一點,這裏的如何,我會做到這一點。

(注意:我創建了一個臨時表,並在例如填充它你已經擁有的表和數據,但我需要一些用於測試)

Create table #feeSchedule 
(
    FeeId int identity(1,1) not null primary key, 
    Description nvarchar(255) not null, 
    FeeAmount money not null, 
    FeeName nvarchar(50) not null 
) 
go 

insert into #feeSchedule values('Nursery', 5000, 'Admission Fee') 
insert into #feeSchedule values('Nursery', 1000, 'Tuition Fee') 
insert into #feeSchedule values('Nursery', 100, 'Late Fee') 
insert into #feeSchedule values('Nursery', 0, 'Exam Fee') 
insert into #feeSchedule values('Play Group', 5000, 'Admission Fee') 
insert into #feeSchedule values('Play Group', 2500, 'Tuition Fee') 
insert into #feeSchedule values('Play Group', 100, 'Late Fee') 
insert into #feeSchedule values('Play Group', 0, 'Exam Fee') 


DECLARE @columnHeaders VARCHAR(MAX) 
SELECT @columnHeaders = 
    COALESCE( 
    @columnHeaders + ',[' + cast(FeeName as varchar) + ']', 
    '[' + cast(FeeName as varchar)+ ']' 
) 
FROM (select distinct FeeName from #feeSchedule) as fs 

DECLARE @sql NVARCHAR(MAX) 
SET @sql = N' 
    SELECT * 
    FROM (
    SELECT 
     fs.Description, 
     fs.FeeName, 
     fs.FeeAmount 
    FROM #feeSchedule fs 
) AS PivotData 
    PIVOT (
    SUM(FeeAmount) 
    FOR FeeName IN (
     ' + @columnHeaders + ' 
    ) 
) AS PivotTable 
' 

exec sp_ExecuteSql @sql 

go 
drop table #feeSchedule 
+0

它工作完美!非常感謝Chris J. Breisch ........ –

0

SELECT * 
FROM (
SELECT 
    Description(invoiceDate) as [year],FeeAmount, 
    InvoiceAmount as Amount 
FROM TableName 
) as s 
PIVOT 
(
SUM(Amount) 
FOR [month] IN (Admission Fee, Tution Fee, Exam Fee, Late Fee) 
)AS pivot 
相關問題