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,037

HOME > .NET Framework > Forum > เช็คแบบทั้ง วัน เดือน ปี ยังไงคะ เห็นคำสั่งที่สอนในบอร์ดนี้มีเช็คเป็นส่วนๆอะค่ะ ไม่ทราบว่าจะเช็คแบบทั้ง วัน เดือน ปี ยังไง



 

เช็คแบบทั้ง วัน เดือน ปี ยังไงคะ เห็นคำสั่งที่สอนในบอร์ดนี้มีเช็คเป็นส่วนๆอะค่ะ ไม่ทราบว่าจะเช็คแบบทั้ง วัน เดือน ปี ยังไง

 



Topic : 039572



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



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




เห็นคำสั่งที่สอนในบอร์ดนี้มีเช็คเป็นส่วนๆอะค่ะ ไม่ทราบว่าจะเช็คแบบทั้ง วัน เดือน ปี ยังไง
1 . คืออยากเปรียบที่วันที่ request กับ delivery ค่ะ ว่าส่งได้ตามวันที่ขอมาหรือไม่
ถ้าเท่ากับหรือน้อยกว่า หรือถ้าเกินมา 1 วัน ก็แสดงว่าเป็นจริงค่ะ เอามาคิด
เช่น
request delivery ผลลัพธ์ที่จะนำมาคิด
1/1/2010 2/1/2010 1
1/1/2010 31/12/2009 1
1/1/2010 1/1/2010 1
1/1/2010 3/1/2010 0

ผลลัพธ์ที่ sum ได้จะได้เป็น 3 ค่ะ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-02-25 11:30:32 By : somooo View : 1431 Reply : 10
 

 

No. 1



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



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


มันออกจะงงนะครับคำถามน่ะคุณอยากได้ไรแน่ครับ คำถามไม่ชัดเจนครับ






Date : 2010-02-26 16:46:04 By : tanapop
 


 

No. 2



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



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


OK-HEADER

Code (C#)
SELECT 
   CASE 
      WHEN ABS(DATEDIFF( DAY ,[REQUEST_DATE] ,[DILIVERY_DATE])) > 1 THEN 0
      ELSE 1
   END AS DELIVERY_MEET_REQUIRE_WEIGHT
FROM .....
WHERE .....

//หรือจะนับเลย

SELECT COUNT([PRIMARY_KEY]) AS COUNT_DELIVERY_MEET_REQUIRE
FROM .....
WHERE  ( ABS(DATEDIFF( DAY ,[REQUEST_DATE] ,[DILIVERY_DATE])) <= 1 )
    ......



Date : 2010-02-26 22:42:26 By : blurEye
 

 

No. 3



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



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


ทำได้แล้วเหรอคุณเพื่อน
Date : 2010-02-28 22:01:23 By : njnight
 


 

No. 4



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



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


จากคำถามนะค่ะ ผลลัพธ์จะได้
TOTAL_PERFORMANCE = 3
TOTAL_RECORD = 4
PERFORMANCE = 0.75

แต่ตอนนี้มันไม่ได้ค่ะ มันออกมาเป็น 0 และออกมา 4 เรคอร์ด ซึ่งเป็นจำนวนทั้งหมดในตารางค่ะ
เขียนไว้แบบนี้ค่ะ

SELECT
CASE TOTAL_RECORD
WHEN 0 THEN 0
ELSE (TOTAL_PERFORMANCE/TOTAL_RECORD)
END AS PERFORMANCE
FROM
(
Select
(
SELECT Count(StockCode) As SC
FROM test2 WHERE (ABS(DATEDIFF( DAY ,[REQUESTDATE] ,[DELIVERYDATE])) <= 1 )
) as TOTAL_PERFORMANCE ,
(
select COUNT([OrderLineID]) from test2
) AS TOTAL_RECORD

FROM test2
) AS PRIMARYQUERY ;
Date : 2010-03-02 12:08:13 By : somooo
 


 

No. 5



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



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


Code (C#)
// แบบสั้นจะได้ว่า

SELECT AVG(DELIVERY_MEET_REQUIRE_WEIGHT) AS DELIVERY_PERFORMANCE
FROM
(
   SELECT 
      CASE 
         WHEN ABS(DATEDIFF( DAY ,[REQUEST_DATE] ,[DILIVERY_DATE])) > 1 THEN 0
         ELSE 1
      END AS DELIVERY_MEET_REQUIRE_WEIGHT
   FROM [TableName]
) AS PRIMARY_QUERY

//Comment
// ใน sub query จะมีการแปลงค่า Delivery date กับ Request date ตามเงื่อนไข
// แต่จำนวน record จะเท่าเดิมค่ะ ฉะนันจึงใช้ Aggregate function AVG ได้เลย

// ส่วนตัวอย่างของคุณส้มโอ ทำดีมากค่ะมีการตรวจเพื่อป้องกันไม่ให้เกิด Divide by Zero
// แค่เข้าใจผิดไปเรื่องนึง 

(
   SELECT Count(StockCode) As SC
   FROM test2 WHERE (ABS(DATEDIFF( DAY ,[REQUESTDATE] ,[DELIVERYDATE])) <= 1 )
) as TOTAL_PERFORMANCE

// คือ TOTAL_PERFORMANCE เป็น Table Alias นะคะไม่ใช่ชื่อ FIELD หากต้องการค่า ผมรวมจากใน
// Sub query นี้ต้องอ้างแบบนี้ค่ะ TOTAL_PERFORMANCE.SC ไม่ใช่ TOTAL_PERFORMANCE โดดๆค่ะ
// เช่นเดียวกันกับ
(
    select COUNT([OrderLineID]) AS REC_COUNT  from test2
)  AS TOTAL_RECORD

// TOTAL_RECORD คือ Table Alias ค่ะ
// พอนำไปอ้างที่ Main Query จึง Error ค่ะ

// ถ้าจะแก้ QUERY ของคุณส้มโอจะได้ประมาณนี้ค่ะ

SELECT
   CASE TOTAL_RECORD
      WHEN 0 THEN 0
      ELSE (DELIVERY_WEIGHT / TOTAL_RECORD )
    END AS DELIVERY_PERFORMANCE
FROM
   Select
  (
      SELECT Count(StockCode) As DELIVERY_WEIGHT
      FROM test2 WHERE (ABS(DATEDIFF( DAY ,[REQUESTDATE] ,[DELIVERYDATE])) <= 1 )
   ) as SUBQUERY_TO_GET_DELIVERY_WEIGHT 
  ,
  (
     select COUNT([OrderLineID])  AS TOTAL_RECORD
     from test2
  )  as SUBQUERY_TO_GET_TOTAL_RECORD 

// คือการสร้าง SubQuery ตัวแปลของ SQL จะเข้าใจว่าเปนการอ้างตารางมาอีกตารางค่ะ
// และเนื่องจาก SubQuery ทั้งสอง มีจำนวน Record เพียง SubQuery ละ 1 Record
// เราจึงนำมา Dot Product ได้เลยไม่จำเป็นต้องใช้การเชื่อมใดอื่นอีก


// ส่วนท่อนบน เขียนให้ชัดๆได้ว่า

SELECT
   CASE SUBQUERY_TO_GET_TOTAL_RECORD.TOTAL_RECORD
      WHEN 0 THEN 0
      ELSE (SUBQUERY_TO_GET_DELIVERY_WEIGHT.DELIVERY_WEIGHT / SUBQUERY_TO_GET_TOTAL_RECORD.TOTAL_RECORD )
    END AS DELIVERY_PERFORMANCE

// Postscript
// 1. ตั้งชื่อตัวแปรสำคัญเสมออย่างน้อยก็ตั้งเป็น ภาษาคาราโอเกะ ไปค่ะทำอะไรจะได้เข้าใจง่าย
// 2. ถึงแม้ว่าใน MSSQLSERVER จะไม่บังคับว่าต้องใช้ AS เมื่อกำหนด Field Alias หรือ Table Alias
//     แต่ขอ strong recommend ว่าควรใช้เสมอ เพื่อจะได้เป็นที่สังเกตุว่าเรามีการเปลี่ยนชื่ออะไรบางอย่าง
// 3. เมื่อใดมีการใช้ Aggregate function SUM ,AVG ,COUNT ,MAX ,MIN etc sหรือ Function อื่นๆ
//     หรือมีการกระทำกับ field เช่น NAME + '   ' + SUR_NAME  ควรมีการตั้งชื่อ Field นั้นใหม่เสมอค่ะ
// ********************************************************************************************
// ควรไม่ควรแล้วแต่จะเห็นควรค่ะ ^ ^ 



Date : 2010-03-02 14:23:40 By : blurEye
 


 

No. 6



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



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


ขอบคุณมากๆเลยค่ะ สำหรับคำแนะนำดีๆ
Date : 2010-03-02 17:35:11 By : somooo
 


 

No. 7



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



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


แต่อยากสอบถามหน่อยคะ คือใน sql เนี่ย มันเขียน if else ได้ใช่มั้ยคะ
แล้วถ้าอยากใส่โค๊ตประมาณนี้เข้าไป จะต้องเขียนแบบไหนหรอคะ
if (Stock_Transaction_File.Warehouse No="01" or
Stock_Transaction_File.Warehouse No ="02" or
Stock_Transaction_File.Warehouse No ="04" or
Stock_Transaction_File.Warehouse No ="06" or
Stock_Transaction_File.Warehouse No ="SAMPLE") and
Stock_Transaction_File.Transact Type ="00" and
Stock_Transaction_File.Transact Date >={?FrDate}
then
Stock_Transaction_File.Quantity //เอาจำนวนสินค้าออกมา
else
if (Stock_Transaction_File.Warehouse No ="01" or
Stock_Transaction_File.Warehouse No ="02" or
Stock_Transaction_File.Warehouse No ="04" or
Stock_Transaction_File.Warehouse No ="06" or
Stock_Transaction_File.Warehouse No ="SAMPLE") and
Stock_Transaction_File.Transact Type ="02" and
Stock_Transaction_File.Transact Date >={?FrDate} and
Stock_Transaction_File.Quantity > 0
then
Stock_Transaction_File.Quantity // เอาจำนวนสินค้าออกมา
else
if (Stock_Transaction_File.Warehouse No ="01" or
Stock_Transaction_File.Warehouse No ="02" or
Stock_Transaction_File.Warehouse No ="04" or
Stock_Transaction_File.Warehouse No ="06" or
Stock_Transaction_File.Warehouse No ="SAMPLE") and
Stock_Transaction_File.Transact Type ="04" and
Stock_Transaction_File.Transact Date >={?FrDate} and
Stock_Transaction_File.Quantity > 0
then
Stock_Transaction_File.Quantity // เอาจำนวนสินค้าออกมา
else
0 // ใส่จำนวนเป็น 0
Date : 2010-03-02 17:41:05 By : somooo
 


 

No. 8



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



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


ถ้าใน STRING ที่ผ่านไปยัง SERVER โดย .NET ไมว่าจะ OleDB ,ODBC หรือ .NET Provider
ใช้ IF ELSE ไม่ได้ค่ะ จะใช้ในการเขียน STORE PROCEDURE
ถ้าต้องการครวจสอบเงื่อนไข ปกติจะใช้ CASE .. WHEN ... THEN ... ELSE ... END ค่ะ
สำหรับ MSSQL SERVER นะคะ

จากตัวอย่างก้อน่าจะเขียนได้ว่า
( ให้เป็น SQL PARAMETER ไปนะคะ )
Code (C#)
SELECT

   CASE
      WHEN (Stock_Transaction_File.Warehouse No = "01") OR (Stock_Transaction_File.Warehouse No = "02")
        OR (Stock_Transaction_File.Warehouse No = "03") OR (Stock_Transaction_File.Warehouse No = "04")
        OR (Stock_Transaction_File.Warehouse No = "SAMPLE") 
        THEN
           CASE
              WHEN (Stock_Transaction_File.Transact Type ="00" ) AND (Stock_Transaction_File.Transact Date >=@VAR_FrDate )
                 THEN Stock_Transaction_File.Quantity
              WHEN (Stock_Transaction_File.Transact Type ="02" ) AND (Stock_Transaction_File.Transact Date >=@VAR_FrDate )
                 AND (Stock_Transaction_File.Quantity > 0)
                 THEN Stock_Transaction_File.Quantity     
              WHEN (Stock_Transaction_File.Transact Type ="04" ) AND (Stock_Transaction_File.Transact Date >=@VAR_FrDate )
                 AND (Stock_Transaction_File.Quantity > 0)
                 THEN Stock_Transaction_File.Quantity
           END
      ELSE 0
   END

FROM ...




// เนื่องจากไม่ทราบความหมายและจุดประสงค์เลยเขียนตามตัวอย่างค่ะ
// สังเกตุว่า เงื่อนไขของ CASE ที่ซ้อนอยู่ข้างใน ผลลัพธ์คือ FIELD เดียวกัน
// ดังนั้นจึงน่าจะเชื่อมกันด้วย OR ได้


Date : 2010-03-02 18:30:38 By : blurEye
 


 

No. 9



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



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


ลองเอาที่คุณ blurEye เขียนไว้มาลองเทสดูผลออกมา เป็น null เพียบเลยค่ะ เลยงงๆ
ตัวอย่างโค๊ต if else ที่ให้ไป คืออยากได้ จำนวนสินค้า ของรหัสสินค้านั้นๆ ตามช่วงเวลาที่กำหนดไว้ค่ะ
โดยที่อยากให้โชว์ รหัสสินค้า กับ จำนวนสินค้า ค่ะ
ซึ่งใน if else ยังไม่ได้ดึงรหัสสินค้ามาค่ะ แล้วถ้าจะเขียนด้วย case นี่ต้องดึงอย่างไรหรอคะ
Date : 2010-03-03 10:03:33 By : somooo
 


 

No. 10



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



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


ถ้ามี NULL ออกมาไม่แปลกค่ะเพราะไม่มีการตรวจสอบว่ามีข้อมูล NULL
ทั้งนี้การสร้าง QUERY ขึ้นกับธรรมชาติของข้อมูลและการออกแบบฐานข้อมูลด้วยค่ะ
เข้าใจว่าเป็น QUERY ที่ยาวและซับซ้อน ลองค่อยๆสร้างจากเงื่อนไขที่แน่นอนที่สุด
แล้วเพิ่มเงื่อนไขต่างๆ เข้าไปทีละนิดค่ะ จะทำใน SERVER EXPLORER หรือ
จะ SQL MANAGEMENT STUDIO ก็ได้ค่ะ
Date : 2010-03-03 10:21:24 By : blurEye
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : เช็คแบบทั้ง วัน เดือน ปี ยังไงคะ เห็นคำสั่งที่สอนในบอร์ดนี้มีเช็คเป็นส่วนๆอะค่ะ ไม่ทราบว่าจะเช็คแบบทั้ง วัน เดือน ปี ยังไง
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 01
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 อัตราราคา คลิกที่นี่