\

Facebook


วันพฤหัสบดีที่ 1 ตุลาคม พ.ศ. 2558

เทคนิคง่ายๆในการแสดงข้อมูลประเภทการเงิน การบัญชี ใน SQL SERVER


ในเรื่องเงินๆทองๆ หน่วยที่น้อยที่สุดคือ 1 สตางค์ (ทศนิยมสองตำแหน่งจะได้ 0.01) และ SQL SERVER ได้สร้างประเภทข้อมูลทางราคาไว้ให้ใช้งานง่ายๆแล้วคือ DECIMAL แต่การคำนวนจริงๆได้ข้อมูลที่ละเอียดกว่า 2 ตำแหน่งอยู่แล้ว ตัวอย่างง่ายๆก็เช่น อยากได้ค่าภาษี(6.3%) กับสินค้า 1295 บาท จะได้ 81.585 คำถามคือ 0.005 ที่เกินมาเราจะทำยังไง

ปล.ตอนรับเรทภาษีมูลค่าเพิ่มใหม่จาก 7% เป็น 6.3% ที่เริ่ม 1 ตุลานี้ เลยเขียนบทความนี้เป็นตัวอย่างซะเลย

เราก็จะปัดขึ้นหรือปัดลงตามปกติ แต่เมื่อสินค้ามีเพิ่มเป็นร้อย เป็นพันชิ้น มันจะเริ่มเห็นความเเตกต่างของเงินที่คำนวนได้ ก็เงินที่จ่ายจริงๆ ในภาษาโปรแกรมเราสามารถเก็บค่าก่อนปัดเศษเพิ่อเอาไว้คำนวนต่อมีฟังชั่นประมาณนี้

ROUND() คือการปัดขึ้นถ้าเศษสุดท้ายมากกว่า 5 และปัดลงถ้าเศษน้อยกว่า 5 สามารถกำหนดความละเอียดของตำแหน่งทศนิยมได้
SELECT ROUND(81.585, 3, 2)
-- 81.585

แล้วยังกำหนดความละเอียดของหลักที่จะเริ่มปัดได้ เช่น
SELECT ROUND(81.585, 2)
-- 81.590

FLOOR() คือการปัดลงทุกกรณี
SELECT FLOOR(81.585)
-- 81

CEILING() คือการปัดขึ้นทุกกรณี
SELECT CEILING(81.585)
-- 82

อีกเทคนิคหนึ่งคือการ CAST หรือการเปลี่ยน TYPE ของตัวเลขซะเลย ซึ่งจริงๆแล้วมันคือการ ROUND() ก่อน CAST() เช่น
SELECT CAST( 0.0453 AS DECIMAL(10,2))
--0.05
*จะเห็นว่าเศษโดนปัดก่อนแปลงเป็นทศนิยม 2 หลัก

ถ้าคุณเขียนโปรแกรมเกี่ยวกับฟังชั่นคำนวนบัญชีคงจะมีประโยชน์อยู่ไม่น้อย เพราะงานเหล่านี้ทุกทศนิยมต้องเปะๆเท่ากัน ห้ามมีตกหล่น แล้วการปัดเศษง่ายๆนี้แหละที่ทำให้พลาดกัน

ไม่มีความคิดเห็น:

May be like this posts

  • POSTMAN สุดยอดเครื่องมือทดสอบ API
    13/08/2015 - 0 Comments
    หากต้องสร้าง Web API ขึ้นมาสักตัวนึงไว้ให้ลูกค้าหรือVerdor…
  • อยากให้ชีวิตง่ายขึ้นต้องใช้ Store Procedure [WinForm c# + SQL Server]
    11/09/2013 - 2 Comments
    คราวที่แล้วผม Blog เกี่ยวกับการติดต่อฐานข้อมูลด้วย SQLConnection ไปแล้ว…
  • เล่น Pokemon Go บนคอม วิ่งในเกมส์ 10 km แบบไม่ต้องลุกจากที่นั่ง !!
    10/08/2016 - 0 Comments
    ***เพิ่มเติม : ปัจจุบันผมเลิกเล่นผ่าน emulator เเล้วนะครับ บทความนี้กลายเป็นอดีตไปละ…
  • แก้ไข PDF ออนไลน์ไม่ต้องพึ่งโปรแกรมเสียเงิน
    04/08/2017 - 0 Comments
    เป็นความอารมณ์เสียอย่างหนึ่งเมื่อต้องแก้งาน PDF แล้วเครื่องเราไม่มี software สำหรับแก้…
  • Doodle Rubik ตัวใหม่ของ Google เล่นกันละยัง
    18/05/2014 - 0 Comments
    วันนี้ 19/5 เข้าหน้ากูเกิ้ลแล้วเจอ Doodle ตัวใหม่ เป็นรูบิค 3x3…
  • ลบ .Bak แสนกวนใจใน Edit Plus
    28/05/2013 - 0 Comments
    ลบ .Bak แสนกวนใจใน Edit Plus สำหรับใครที่ใช้ Edit plus เป็น Editor ในการเขียนโค๊ดไม่ว่าจะเป็น html php c/c++…
  • Hack พาสเวิร์ด MS SQL SERVER ด้วย BruteForce
    13/11/2014 - 0 Comments
    "ถ้า server ตัวไหนที่อนุญาติให้ login เข้าระบบ และไม่สนใจว่าล็อกอินสำเร็จหรือไม่…