|
|
|
ช่วยแนะน้ำวิธีเขียน sql ให้หน่อยนะค่ะ เขียนมาตั้งนานจนปัญญาจริงๆค่ะ |
|
|
|
|
|
|
|
เอา Data มาเป็น Column ยากน่ะครับ ถ้าเป็นแบบนี้ผมจะใช้การจัดการที่ตัวโปรแกรมมากกว่า Query ครับ
|
|
|
|
|
Date :
2012-01-08 08:45:02 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จริง ๆ ผลลัพธ์ที่ต้องการตามหลักจะไม่ถูกนะครับ เพราะว่าค่า Column จะต้องมีชื่อไม่ซ้ำกันนะครับ ถึงจะทำ Pivot ได้ ผมลองทำตัวอย่างมาให้ดูน่าจะเป็นแนวทางได้นะครับ
จากตัวอย่างผมสร้างข้อมูลตามที่คุณมีให้มาและตั้งชื่อ Table ว่า TblStatus นะครับ จากนั้นใส่ Code ดังนี้
SQL Server 2005
declare @colNames varchar(4000)
declare @colValues varchar(4000)
declare @query varchar(8000)
select @colNames = coalesce(@colNames + ', ', '') + 'isnull(' + t1.Date + ', 0) as ' + t1.Date from
(
select distinct '[' + convert(varchar(10), [Date], 103) + ']' as [Date] from TblStatus
) t1
select @colValues = coalesce(@colValues + ', ', '') + t1.Date from
(
select distinct '[' + convert(varchar(10), [Date], 103) + ']' as [Date] from TblStatus
) t1
set @query = N'select ID, ' + @colNames + ' from
(
select ID, [Date], [Status] from TblStatus
) p pivot
(
sum([Status])
for [Date] in (' + @colValues + ')
) as pvt
order by ID'
execute(@query)
เมื่อทดลอง Run จะได้ผลลัพธ์ดังภาพด้านล่างนี้
|
|
|
|
|
Date :
2012-01-09 01:03:16 |
By :
gunnermontana |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|