คำสั่ง Group By ใน SQL คือคำสั่งที่ใช้จัดกลุ่ม column จากการ Select ข้อมูล ซึ่งต้องใช้ร่วมกับ Aggregate function เช่น
-Count , Sum , Max , Min , Avg
ตัวอย่างการใช้ Group by
SELECT dept_no,COUNT(emp_id) as emp_count,SUM(salary) as sum_salary,MAX(salary) as max_salary,MIN(salary) as min_salary,AVG(salary) as avg_salary
FROM emp
GROUP BY dept_no
ความหมายของ Query นี้คือ การ นับจำนวนพนักงาน,ยอม Summary ของเงินเดือน ,เงินสูงสุด , เงินเดือนต่ำสุด และเงินเดือนเฉี่ยของพนักงาน ตามรหัสแผนกนั่นเอง
Mssql, Microsoft sql server, SSAS, SSRS ,SSIS , Analysis Service, Reporting Service, Integration Service, XMLA ,MDX ,SQL
วันพฤหัสบดีที่ 18 มีนาคม พ.ศ. 2553
คำสั่ง SQL , SQL Command
SQL คือ Simple Query Language (ย่อมาจาก) แปลตรง ๆ ก็คือ ภาษาพื้นฐานที่ใช้ในการสืบค้นข้อมูลนั่นเอง
SQL Query ส่วนใหญ่แล้วจะมี Syntax ที่คล้าย ๆ แตกต่างกันเพียงรายละเอียดปลีกย่อยเท่านั้น
การที่จะทำความเข้าใจกับ SQL ไม่ใช่เรื่องยาก เพียงแต่จะต้องมีความเข้าใจพื้นฐานสักเล็กน้อย
เกี่ยวกับฐานข้อมูล ซึ่งก็มีมากมายให้เลือกใช้ครับ ตั้งแต่ของฟรีไปยังที่ต้องจ่ายเงิน(มาก)
ตัวอย่าง Free Database ก็เช่น Mysql , SQL Server Express Edition,
ส่วนที่ต้องเสียเงินก็เช่น SQL Server 2005,2008 , Microsoft Access, ORACLE , DB2
คำสั่ง SQL พื้นฐาน
SELECT FROM WHERE ORDER BY
SELECT : คือ "การเลือก" ความหมายก็ตรงตัว
FROM : คือ "จาก"
WHERE : คือ "ที่ตรงตามเงื่อนไข"
ORDER BY : คือ "การเรียงลำดับข้อมูล" ASC (Ascendant) คือจากน้อยไปหามาก , DESC (Descendant) คือ จากมากไปหาน้อย
หากไม่ใส่ ASC / DESC ค่า Default จะเป็น ASC
ดังนั้น SELECT FROM WHERE + ORDER BY ก็คือ การเลือกข้อมูลจากแหล่งข้อมูล (ตาราง / Table,View) ที่ต้องการ
โดยสามารถระบุเงื่อนไขลงไปนั่นเอง
ตัวอย่างเช่น
SELECT * FROM employee ORDER BY emp_id ASC
ก็หมายความว่าเลือกทุกคอลัมน์จากตาราง employee โดยเรียงลำดับด้วยฟิลด์ emp_id จากน้อยไปหามาก
การใช้ WHERE ใน SQL
SELECT * FROM employee
WHERE emp_id ='100234'
หมายความว่า เลือกข้อมูลทุกคอลัมน์จากตาราง employee ที่ค่าในคอลัมน์ emp_id เท่ากับ '100234'
SELECT * FROM employee
WHERE emp_id LIKE '100%'
หมายความว่า เลือกข้อมูลทุกคอลัมน์จากตาราง employee ที่ค่าในคอลัมน์ emp ขึ้นต้นด้วย '100'
ค่าที่เหลือจะเป็นอะไรก็ได้
SELECT emp_id,emp_name,tel_no,salary,(salary *1.1) as new_salary
FROM employee
ORDER BY salary DESC
หมายความว่า เลือกข้อมูล ตาม column ที่ระบุ และมีการคำนวนค่าจาก column เงินเดือนเพิ่มเติม
จากตาราง employee โดยขึ้นเงินเดือน 10% (salary *1.1)
SQL Query ส่วนใหญ่แล้วจะมี Syntax ที่คล้าย ๆ แตกต่างกันเพียงรายละเอียดปลีกย่อยเท่านั้น
การที่จะทำความเข้าใจกับ SQL ไม่ใช่เรื่องยาก เพียงแต่จะต้องมีความเข้าใจพื้นฐานสักเล็กน้อย
เกี่ยวกับฐานข้อมูล ซึ่งก็มีมากมายให้เลือกใช้ครับ ตั้งแต่ของฟรีไปยังที่ต้องจ่ายเงิน(มาก)
ตัวอย่าง Free Database ก็เช่น Mysql , SQL Server Express Edition,
ส่วนที่ต้องเสียเงินก็เช่น SQL Server 2005,2008 , Microsoft Access, ORACLE , DB2
คำสั่ง SQL พื้นฐาน
SELECT FROM WHERE ORDER BY
SELECT : คือ "การเลือก" ความหมายก็ตรงตัว
FROM : คือ "จาก"
WHERE : คือ "ที่ตรงตามเงื่อนไข"
ORDER BY : คือ "การเรียงลำดับข้อมูล" ASC (Ascendant) คือจากน้อยไปหามาก , DESC (Descendant) คือ จากมากไปหาน้อย
หากไม่ใส่ ASC / DESC ค่า Default จะเป็น ASC
ดังนั้น SELECT FROM WHERE + ORDER BY ก็คือ การเลือกข้อมูลจากแหล่งข้อมูล (ตาราง / Table,View) ที่ต้องการ
โดยสามารถระบุเงื่อนไขลงไปนั่นเอง
ตัวอย่างเช่น
SELECT * FROM employee ORDER BY emp_id ASC
ก็หมายความว่าเลือกทุกคอลัมน์จากตาราง employee โดยเรียงลำดับด้วยฟิลด์ emp_id จากน้อยไปหามาก
การใช้ WHERE ใน SQL
SELECT * FROM employee
WHERE emp_id ='100234'
หมายความว่า เลือกข้อมูลทุกคอลัมน์จากตาราง employee ที่ค่าในคอลัมน์ emp_id เท่ากับ '100234'
SELECT * FROM employee
WHERE emp_id LIKE '100%'
หมายความว่า เลือกข้อมูลทุกคอลัมน์จากตาราง employee ที่ค่าในคอลัมน์ emp ขึ้นต้นด้วย '100'
ค่าที่เหลือจะเป็นอะไรก็ได้
SELECT emp_id,emp_name,tel_no,salary,(salary *1.1) as new_salary
FROM employee
ORDER BY salary DESC
หมายความว่า เลือกข้อมูล ตาม column ที่ระบุ และมีการคำนวนค่าจาก column เงินเดือนเพิ่มเติม
จากตาราง employee โดยขึ้นเงินเดือน 10% (salary *1.1)
วันจันทร์ที่ 15 มีนาคม พ.ศ. 2553
Error Restore database in sql server 2005 Express
RestoreContainer::ValidateTargetForCreation
ในกรณีที่เคยเจอว่าไม่สามารถ Restore database ที่ Backup จากเครื่องอื่นลงเครื่องเราได้
ให้ลอง Check ใน Configuration manager ดังนี้
- Open SQL Server configuration manager
- Choose SQL Server 2005 service
- Right click on your sql server instant and select properties
- On logon tab --> Select "build in account"
- Select "Local System" from drop down list
Site Ref : http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/7b259f06-e1e2-47f5-8303-77775ee80400
ในกรณีที่เคยเจอว่าไม่สามารถ Restore database ที่ Backup จากเครื่องอื่นลงเครื่องเราได้
ให้ลอง Check ใน Configuration manager ดังนี้
- Open SQL Server configuration manager
- Choose SQL Server 2005 service
- Right click on your sql server instant and select properties
- On logon tab --> Select "build in account"
- Select "Local System" from drop down list
Site Ref : http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/7b259f06-e1e2-47f5-8303-77775ee80400
Error installation sql server 2005 express , MSXML 6.0
เกิดจากการที่ Version ของ MSXML6 ที่มีในเครื่องใหม่กว่า Version ที่กำลังจะ Install
ให้ Remove ของเดิมออกก่อน โดยใช้โปรแกรม Windows Install cleanup
รายละเอียดของวิธีการ
http://support.microsoft.com/kb/968749
ให้ Remove ของเดิมออกก่อน โดยใช้โปรแกรม Windows Install cleanup
รายละเอียดของวิธีการ
http://support.microsoft.com/kb/968749
วันพุธที่ 10 มีนาคม พ.ศ. 2553
Crystal report 2008 BUG , Service pack , Patch update
-Crystal report 2008 problem : Can not refresh table schema / Storprocedure selected field
(คริสตัลรีพอร์ท ไม่ update field เมื่อมีการแก้ไข ตาราง หรือ storprocedure )
-Crystal report 2008 problem : Line can not drag or move to the end of paper when set to "Landscape"
(คริสตัลรีพอร์ท ไม่สามารถลากเส้นสุดขอบด้านขวาได้ ถ้าเซ็ตกระดาษเป็นแนวนอน)
นอกเรื่องจาก SQL Server ,BI นิดนึงครับ แต่ยังคงเกี่ยวกับเรื่องการทำรีพอร์ท
จะขอพูดถึง Crystal report 2008 สักหน่อย พอดีมีโอกาสได้ใช้งาน Tools version นี้ ซึ่งจริง ๆ ก็เคยใช้
version ก่อน ๆ มานิหน่อยครับ
แต่ว่า ต้องเจอกับปัญหาที่ไม่น่าเชื่อ ว่ามันจะมีอยู่จริงใน Software ระดับนี้ครับ (BO ซื้อมาทำ)
ตอนแรกก็งง ก่งก๊งกันไป ถามเพื่อน เพื่อนก็ตอบไม่ได้ ผลสุดท้ายก็ Google ครับ อาจจะเริ่มงงว่าเกิดไรขึ้นตอนแรกที่ได้ใช้
ก็ Install ปกติ (เพื่อนเอาแผ่นมาให้) ก็ใช้ ๆ ไปครับปัญหาที่เจอตามนี้เลย
1. field ในฐานข้อมูลเปลี่ยน Report ที่เคยทำไว้ก่อนหน้า Refresh ให้ตายก็ไม่เปลี่ยนตาม
ไม่ว่าจะเป็น Field name , Data type , แม้กระทั่ง Field ที่เพิ่มมาใหม่ก็ไม่เห็นหัวมัน - -" คิดูแล้วกัน
2.อยากทำรายงานขนาดกระดาษ A4 จาก แนวตั้ง (Portrait) เป็นแนวนอน (Landscape) ปรากฎว่า เส้นที่ลาก
ไม่สามารถลากถึงสุดขอบกระดาษด้านขวาได้ครับพี่น้องงง งงกันไปอีกสองสามวัน แม้จะมาปรึกษา
ผู้รู้ที่ Office แล้ว ต่างตกตะลึงกับ Feature นี้ - - ฮ่า ๆ แล้วมันลากได้แค่ตำแหน่งของแนวตั้งอ่ะนะ
เฮ้อ ทำไปได้เนอะ
3. Refresh parameter field แล้วจะ Save ไม่ได้นะ
เจอสองอันนี้เข้าไปก็ไม่ต้องทำไรกินแล้วครับ BUG แบบนี้ ดังนั้นจึงเริ่มคิดได้ว่า เอ๊ะ มันจะมี Service pack หรือ Patch update
เหมือน windows รึป่าวหว่า ไหนลอง Search ดูดิ๊ ก็ได้พบกับ Service pack ที่ออกมา Update ครับ
(ก่อนหน้านี้ Crystal ไม่เคยมี Service pack ไรแบบนี้) นอกจากนั้นก็ได้ลองหาข้อมูลผู้ที่เจอปัญหาคล้าย ๆกัน
ก็พบว่ามันเป็น BUG ของ Software จริง ๆ อย่างที่เกริ่นตอนต้นครับ ว่าใครจะไปคิดว่า Software ระดับนี้จะมี BUG กากๆ แบบนี้ได้
เหมือนจะบ่นมากไป แต่ใครลองได้เจอแบบนี้คงปวดหัวอะนะ
อันนี้เป็น Link สำหรับ Download crystal report 2008 Patch update นะครับ
บอกได้คำเดียวว่าต้องลง ไม่ลงคุณใช้งานไม่ได้แน่ ๆ เหอ ๆ
Crystal report 2008 : Service pack download link
http://www.sdn.sap.com/irj/boc/crystalreports-dotnet?rid=/webcontent/uuid/90d7dc4e-36ce-2b10-d2b3-d5d72d067e21
(คริสตัลรีพอร์ท ไม่ update field เมื่อมีการแก้ไข ตาราง หรือ storprocedure )
-Crystal report 2008 problem : Line can not drag or move to the end of paper when set to "Landscape"
(คริสตัลรีพอร์ท ไม่สามารถลากเส้นสุดขอบด้านขวาได้ ถ้าเซ็ตกระดาษเป็นแนวนอน)
นอกเรื่องจาก SQL Server ,BI นิดนึงครับ แต่ยังคงเกี่ยวกับเรื่องการทำรีพอร์ท
จะขอพูดถึง Crystal report 2008 สักหน่อย พอดีมีโอกาสได้ใช้งาน Tools version นี้ ซึ่งจริง ๆ ก็เคยใช้
version ก่อน ๆ มานิหน่อยครับ
แต่ว่า ต้องเจอกับปัญหาที่ไม่น่าเชื่อ ว่ามันจะมีอยู่จริงใน Software ระดับนี้ครับ (BO ซื้อมาทำ)
ตอนแรกก็งง ก่งก๊งกันไป ถามเพื่อน เพื่อนก็ตอบไม่ได้ ผลสุดท้ายก็ Google ครับ อาจจะเริ่มงงว่าเกิดไรขึ้นตอนแรกที่ได้ใช้
ก็ Install ปกติ (เพื่อนเอาแผ่นมาให้) ก็ใช้ ๆ ไปครับปัญหาที่เจอตามนี้เลย
1. field ในฐานข้อมูลเปลี่ยน Report ที่เคยทำไว้ก่อนหน้า Refresh ให้ตายก็ไม่เปลี่ยนตาม
ไม่ว่าจะเป็น Field name , Data type , แม้กระทั่ง Field ที่เพิ่มมาใหม่ก็ไม่เห็นหัวมัน - -" คิดูแล้วกัน
2.อยากทำรายงานขนาดกระดาษ A4 จาก แนวตั้ง (Portrait) เป็นแนวนอน (Landscape) ปรากฎว่า เส้นที่ลาก
ไม่สามารถลากถึงสุดขอบกระดาษด้านขวาได้ครับพี่น้องงง งงกันไปอีกสองสามวัน แม้จะมาปรึกษา
ผู้รู้ที่ Office แล้ว ต่างตกตะลึงกับ Feature นี้ - - ฮ่า ๆ แล้วมันลากได้แค่ตำแหน่งของแนวตั้งอ่ะนะ
เฮ้อ ทำไปได้เนอะ
3. Refresh parameter field แล้วจะ Save ไม่ได้นะ
เจอสองอันนี้เข้าไปก็ไม่ต้องทำไรกินแล้วครับ BUG แบบนี้ ดังนั้นจึงเริ่มคิดได้ว่า เอ๊ะ มันจะมี Service pack หรือ Patch update
เหมือน windows รึป่าวหว่า ไหนลอง Search ดูดิ๊ ก็ได้พบกับ Service pack ที่ออกมา Update ครับ
(ก่อนหน้านี้ Crystal ไม่เคยมี Service pack ไรแบบนี้) นอกจากนั้นก็ได้ลองหาข้อมูลผู้ที่เจอปัญหาคล้าย ๆกัน
ก็พบว่ามันเป็น BUG ของ Software จริง ๆ อย่างที่เกริ่นตอนต้นครับ ว่าใครจะไปคิดว่า Software ระดับนี้จะมี BUG กากๆ แบบนี้ได้
เหมือนจะบ่นมากไป แต่ใครลองได้เจอแบบนี้คงปวดหัวอะนะ
อันนี้เป็น Link สำหรับ Download crystal report 2008 Patch update นะครับ
บอกได้คำเดียวว่าต้องลง ไม่ลงคุณใช้งานไม่ได้แน่ ๆ เหอ ๆ
Crystal report 2008 : Service pack download link
http://www.sdn.sap.com/irj/boc/crystalreports-dotnet?rid=/webcontent/uuid/90d7dc4e-36ce-2b10-d2b3-d5d72d067e21
สมัครสมาชิก:
บทความ (Atom)