 |
|
จะ query ข้อมูลเปรียบเทียบระหว่างวันที่ส่งล่าสุด กับ วันนี้ ออกมาเป็นจำนวนวัน แล้วเอาไปโชว์ใน คอลัมได้มั้ยครับ |
|
 |
|
|
 |
 |
|

Code (C#)
SELECT A.[Resu_ID]
,A.[Rese_ID]
,A.[Resu_Date]
FROM [Cust].[dbo].[T_Results] A , [Cust].[dbo].[T_Reservations] B
WHERE A.Rese_ID = B.Rese_ID
จะ where เพิ่มยังไงดีครับให้โชว์ คอลัม Rese_ID อันเดียวที่ Resu_ID มีค่ามากสุด ของ Rese_ID แต่ละอันๆ ให้ได้แบบนี้

|
 |
 |
 |
 |
Date :
2011-09-12 19:24:37 |
By :
SPIRITT |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณมากครับท่าน นั่งคิดหลายวันไม่ได้สะที 
|
 |
 |
 |
 |
Date :
2011-09-13 10:36:59 |
By :
SPIRITT |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอถามต่อหน่อยนะครับ
Code (C#)
SELECT s.[Resu_ID], s.[Rese_ID], s.Resu_Date, (SELECT DATEDIFF(day,s.[Resu_Date],GETDATE())) as Status, s.Resu_Send_Total, s.Resu_Pending
FROM [Cust].[dbo].[T_Reservations] r
LEFT JOIN [Cust].[dbo].[T_Results] s ON r.Rese_ID = s.Rese_ID
AND s.Resu_ID=(SELECT TOP 1 x.Resu_ID FROM [Cust].[dbo].[T_Results] x
WHERE x.Rese_ID = r.Rese_ID
ORDER BY x.Resu_Date DESC)

ตอนนี้หาค่า ระยะหว่างของวันส่งล่าสุด กับวันนี้ได้แล้วครับ
ต่อไปจะเปียบเทียบ คอลัม ถ้า Resu_Pending มากกว่า หรือ = 0 ในช่อง Status ให้แสดงผลเป็นอย่างได้มั้ยครับ
แบบว่า ใส่ if else ใน query เลย
เคยใช้ทำแต่ ช่องคอลัมลัแสดงผลคอลัมนั้นๆเลย
Code (C#)
,case when[T_ANS] is null then '0' ";
else [T_ANS] end as [T_ANS]";
|
 |
 |
 |
 |
Date :
2011-09-13 10:47:32 |
By :
SPIRITT |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ่อ พอได้แนวคิดแล้วครับ
ในเทเบิ้ล T_Reservations ผมมี Rese_Status อยู่แล้วครับ
ตอนแรก ผมเมื่อมีการแอดรายการส่งของรายการจองนั้นเสร็จก็จะ update ของ Rese_Status นั้น ว่าระหว่างวันที่แอดรายการส่ง กับ วันนี้ ต่างกันกี่วัน
Code (C#)
ss = "select max (Resu_ID) from T_Results where Rese_ID = '" + RequestID + "'";
SqlCommand cmdss = new SqlCommand(ss, db);
SqlDataAdapter dass = new SqlDataAdapter(cmdss);
DataSet dsss = new DataSet();
dass.Fill(dsss, "Cust");
Object bs = cmdss.ExecuteScalar();
sqls = "SELECT DATEDIFF(day,[Resu_Date],GETDATE()) As DiffDate FROM [T_Results] where Rese_ID = '" + RequestID + "' and Resu_ID = '" + bs + "'";
SqlCommand cmdd = new SqlCommand(sqls, db);
SqlDataAdapter dad = new SqlDataAdapter(cmdd);
DataSet dsd = new DataSet();
dad.Fill(dsd, "Cusst");
Object ad = cmdd.ExecuteScalar();
int aad = Convert.ToInt32(ad.ToString());
StringBuilder sb = new StringBuilder();
sb.AppendLine(" UPDATE [Cust].[dbo].[T_Reservations] ");
//sb.AppendLine(" SET [Cust_ID] = @Cust_ID ");
//sb.AppendLine(" ,[Fab_ID] = @Fab_ID ");
//sb.AppendLine(" ,[Rese_Date] = @Rese_Date ");
//sb.AppendLine(" ,[Rese_Amount] = @Rese_Amount ");
//sb.AppendLine(" ,[Rese_Price] = @Rese_Price> ");
sb.AppendLine(" SET [Resu_Send_Total] = @Resu_Send_Total ");
sb.AppendLine(" ,[Resu_Pending] = @Resu_Pending ");
sb.AppendLine(" ,[Rese_Status] = @Rese_Status ");
sb.AppendLine(" WHERE Rese_ID = '" + RequestID + "'");
SqlCommand cmds = new SqlCommand(sb.ToString(), db);
cmds.Parameters.AddWithValue("@Resu_Send_Total", data);
cmds.Parameters.AddWithValue("@Resu_Pending", pending);
if (pending <= 0) {
cmds.Parameters.AddWithValue("@Rese_Status", "ส่งครบแล้ว");
}
else {
cmds.Parameters.AddWithValue("@Rese_Status", aad + " วัน");
}
จากบรรทัดล่างๆ เปลี่ยนจาก ส่งครบแล้วเก็บเป็น เลข 1 หรือ 2 เพื่อที่จะไป where จาก query ข้างต้น
|
 |
 |
 |
 |
Date :
2011-09-13 12:32:32 |
By :
SPIRITT |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|