Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > .NET Framework > Forum > ช่วยแนะน้ำวิธีเขียน sql ให้หน่อยนะค่ะ เขียนมาตั้งนานจนปัญญาจริงๆค่ะ



 

ช่วยแนะน้ำวิธีเขียน sql ให้หน่อยนะค่ะ เขียนมาตั้งนานจนปัญญาจริงๆค่ะ

 



Topic : 071491



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์




มีข้อมูลใน db ดังนี้ค่ะ

Date                ID    Status  
1/1/2011         1         1
1/2/2011         1         2
1/1/2011         2         3
2/1/2011         1         1


ต้องการแสดงผลเป็น

ID    1/1/2011   1/2/2011      1/1/2011      2/1/2011
1           1               2                  0                1
2            0              0                  3                0


ข้อมูลจริงมีหลาย date หลาย id และหลาย status แบบไม่จำกัดจะเขียนเป็น sql ได้ยังไงค่ะเพื่อให้แสดงผลแบบนี้อ่ะค่ะ
ใช้ sql 2005 ค่ะ



Tag : .NET, MySQL, Ms SQL Server 2005, Ms SQL Server 2008, Oracle, DB2







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-01-07 23:48:56 By : nstk View : 1110 Reply : 2
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

เอา Data มาเป็น Column ยากน่ะครับ ถ้าเป็นแบบนี้ผมจะใช้การจัดการที่ตัวโปรแกรมมากกว่า Query ครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-08 08:45:02 By : webmaster
 


 

No. 2



โพสกระทู้ ( 154 )
บทความ ( 0 )



สถานะออฟไลน์


จริง ๆ ผลลัพธ์ที่ต้องการตามหลักจะไม่ถูกนะครับ เพราะว่าค่า 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 จะได้ผลลัพธ์ดังภาพด้านล่างนี้
Result
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-09 01:03:16 By : gunnermontana
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ช่วยแนะน้ำวิธีเขียน sql ให้หน่อยนะค่ะ เขียนมาตั้งนานจนปัญญาจริงๆค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่