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

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


 

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

 
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 : 1461 Reply : 10
 

 

No. 1



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



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


มันออกจะงงนะครับคำถามน่ะคุณอยากได้ไรแน่ครับ คำถามไม่ชัดเจนครับ
Date : 2010-02-26 16:46:04 By : tanapop
 

 

No. 2



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



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


OK-HEADER

Code (C#)
01.SELECT
02.   CASE
03.      WHEN ABS(DATEDIFF( DAY ,[REQUEST_DATE] ,[DILIVERY_DATE])) > 1 THEN 0
04.      ELSE 1
05.   END AS DELIVERY_MEET_REQUIRE_WEIGHT
06.FROM .....
07.WHERE .....
08. 
09.//หรือจะนับเลย
10. 
11.SELECT COUNT([PRIMARY_KEY]) AS COUNT_DELIVERY_MEET_REQUIRE
12.FROM .....
13.WHERE  ( ABS(DATEDIFF( DAY ,[REQUEST_DATE] ,[DILIVERY_DATE])) <= 1 )
14.    ......

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#)
01.// แบบสั้นจะได้ว่า
02. 
03.SELECT AVG(DELIVERY_MEET_REQUIRE_WEIGHT) AS DELIVERY_PERFORMANCE
04.FROM
05.(
06.   SELECT
07.      CASE
08.         WHEN ABS(DATEDIFF( DAY ,[REQUEST_DATE] ,[DILIVERY_DATE])) > 1 THEN 0
09.         ELSE 1
10.      END AS DELIVERY_MEET_REQUIRE_WEIGHT
11.   FROM [TableName]
12.) AS PRIMARY_QUERY
13. 
14.//Comment
15.// ใน sub query จะมีการแปลงค่า Delivery date กับ Request date ตามเงื่อนไข
16.// แต่จำนวน record จะเท่าเดิมค่ะ ฉะนันจึงใช้ Aggregate function AVG ได้เลย
17. 
18.// ส่วนตัวอย่างของคุณส้มโอ ทำดีมากค่ะมีการตรวจเพื่อป้องกันไม่ให้เกิด Divide by Zero
19.// แค่เข้าใจผิดไปเรื่องนึง
20. 
21.(
22.   SELECT Count(StockCode) As SC
23.   FROM test2 WHERE (ABS(DATEDIFF( DAY ,[REQUESTDATE] ,[DELIVERYDATE])) <= 1 )
24.) as TOTAL_PERFORMANCE
25. 
26.// คือ TOTAL_PERFORMANCE เป็น Table Alias นะคะไม่ใช่ชื่อ FIELD หากต้องการค่า ผมรวมจากใน
27.// Sub query นี้ต้องอ้างแบบนี้ค่ะ TOTAL_PERFORMANCE.SC ไม่ใช่ TOTAL_PERFORMANCE โดดๆค่ะ
28.// เช่นเดียวกันกับ
29.(
30.    select COUNT([OrderLineID]) AS REC_COUNT  from test2
31.)  AS TOTAL_RECORD
32. 
33.// TOTAL_RECORD คือ Table Alias ค่ะ
34.// พอนำไปอ้างที่ Main Query จึง Error ค่ะ
35. 
36.// ถ้าจะแก้ QUERY ของคุณส้มโอจะได้ประมาณนี้ค่ะ
37. 
38.SELECT
39.   CASE TOTAL_RECORD
40.      WHEN 0 THEN 0
41.      ELSE (DELIVERY_WEIGHT / TOTAL_RECORD )
42.    END AS DELIVERY_PERFORMANCE
43.FROM
44.   Select
45.  (
46.      SELECT Count(StockCode) As DELIVERY_WEIGHT
47.      FROM test2 WHERE (ABS(DATEDIFF( DAY ,[REQUESTDATE] ,[DELIVERYDATE])) <= 1 )
48.   ) as SUBQUERY_TO_GET_DELIVERY_WEIGHT
49.  ,
50.  (
51.     select COUNT([OrderLineID])  AS TOTAL_RECORD
52.     from test2
53.  as SUBQUERY_TO_GET_TOTAL_RECORD
54. 
55.// คือการสร้าง SubQuery ตัวแปลของ SQL จะเข้าใจว่าเปนการอ้างตารางมาอีกตารางค่ะ
56.// และเนื่องจาก SubQuery ทั้งสอง มีจำนวน Record เพียง SubQuery ละ 1 Record
57.// เราจึงนำมา Dot Product ได้เลยไม่จำเป็นต้องใช้การเชื่อมใดอื่นอีก
58. 
59. 
60.// ส่วนท่อนบน เขียนให้ชัดๆได้ว่า
61. 
62.SELECT
63.   CASE SUBQUERY_TO_GET_TOTAL_RECORD.TOTAL_RECORD
64.      WHEN 0 THEN 0
65.      ELSE (SUBQUERY_TO_GET_DELIVERY_WEIGHT.DELIVERY_WEIGHT / SUBQUERY_TO_GET_TOTAL_RECORD.TOTAL_RECORD )
66.    END AS DELIVERY_PERFORMANCE
67. 
68.// Postscript
69.// 1. ตั้งชื่อตัวแปรสำคัญเสมออย่างน้อยก็ตั้งเป็น ภาษาคาราโอเกะ ไปค่ะทำอะไรจะได้เข้าใจง่าย
70.// 2. ถึงแม้ว่าใน MSSQLSERVER จะไม่บังคับว่าต้องใช้ AS เมื่อกำหนด Field Alias หรือ Table Alias
71.//     แต่ขอ strong recommend ว่าควรใช้เสมอ เพื่อจะได้เป็นที่สังเกตุว่าเรามีการเปลี่ยนชื่ออะไรบางอย่าง
72.// 3. เมื่อใดมีการใช้ Aggregate function SUM ,AVG ,COUNT ,MAX ,MIN etc sหรือ Function อื่นๆ
73.//     หรือมีการกระทำกับ field เช่น NAME + '   ' + SUR_NAME  ควรมีการตั้งชื่อ Field นั้นใหม่เสมอค่ะ
74.// ********************************************************************************************
75.// ควรไม่ควรแล้วแต่จะเห็นควรค่ะ ^ ^

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#)
01.SELECT
02. 
03.   CASE
04.      WHEN (Stock_Transaction_File.Warehouse No = "01") OR (Stock_Transaction_File.Warehouse No = "02")
05.        OR (Stock_Transaction_File.Warehouse No = "03") OR (Stock_Transaction_File.Warehouse No = "04")
06.        OR (Stock_Transaction_File.Warehouse No = "SAMPLE")
07.        THEN
08.           CASE
09.              WHEN (Stock_Transaction_File.Transact Type ="00" ) AND (Stock_Transaction_File.Transact Date >=@VAR_FrDate )
10.                 THEN Stock_Transaction_File.Quantity
11.              WHEN (Stock_Transaction_File.Transact Type ="02" ) AND (Stock_Transaction_File.Transact Date >=@VAR_FrDate )
12.                 AND (Stock_Transaction_File.Quantity > 0)
13.                 THEN Stock_Transaction_File.Quantity    
14.              WHEN (Stock_Transaction_File.Transact Type ="04" ) AND (Stock_Transaction_File.Transact Date >=@VAR_FrDate )
15.                 AND (Stock_Transaction_File.Quantity > 0)
16.                 THEN Stock_Transaction_File.Quantity
17.           END
18.      ELSE 0
19.   END
20. 
21.FROM ...
22. 
23. 
24. 
25. 
26.// เนื่องจากไม่ทราบความหมายและจุดประสงค์เลยเขียนตามตัวอย่างค่ะ
27.// สังเกตุว่า เงื่อนไขของ CASE ที่ซ้อนอยู่ข้างใน ผลลัพธ์คือ FIELD เดียวกัน
28.// ดังนั้นจึงน่าจะเชื่อมกันด้วย 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 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





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