 |
|
สอบถามเรื่องใช้ SELECT MAX ใน MSSQL แล้ว Error ครับ |
|
 |
|
|
 |
 |
|
วันนี้หวยออก และในกรณีที่หนีหนี้
MySQL Max(Field) == SQL Server Max(Field) Over (Partition By (Select 0))
(อาจจะเรียกง่ายฯก็ได้ว่า Max(Field) without Group By)
Code (SQL)
SELECT
id_stock,
qty_entry,
qty_out,
Max(total) Over (Partition By (Select 0)),
comment,
datetime
FROM
App.stock_card
|
 |
 |
 |
 |
Date :
2014-09-01 10:11:54 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
@kenghockey ระบบงาน IC โรงพยาบาลของคุณไปถึงไหนแล้วครับ (ก้าวหน้าไปมากน้อยแค่ไหน)
งานของคุณและของผมมันไกล้เคียงกัน (ใช้เวลาค่อนข้างเนิ่นนานเหมือนฯกันด้วย)
--- ผมเสียเวลาไปกับระบบ IC และ GL ไปมากโขเลยครับ แต่สิ่งที่ได้มาคือ
----- เทคนิคการเขียนโปรแกรม, Business Logic, Table Design, Report Design, etc...
----- ผมประเมินงานของผมเองตอนนี้ได้ประมาณ 95% (IC+GL)
ปล. เหนื่อยมากมาก (เหนื่อยจริงฯ)
ผมลืมบอกอะไรอีกนิดหนึ่งครับ จาก Query ด้านบน (#NO1) ถ้ามันทำงานได้ค่อนข้างช้า ก็ให้แก้ไขดังนี้
Code (SQL)
Select App.stock_card.*, --อันนี้ผมขี้เกียจพิมพ์
tmpTable.maxTotal
From App.stock_card
CROSS APPLY (Select MAX(tmpXXX.total) Over (Partition By (Select 0)) As maxTotal From App.stock_card As tmpXXX) As tmpTable
หรือจะเขียนแบบนี้ก็ได้ โดยใช้ Common Table Expressions
Code (SQL)
;WITH tmpTable --อย่าลืมเครื่องหมายตัวนี้นะครับ ;
AS
(
Select MAX(total) Over (Partition By (Select 0)) As maxTotal From App.stock_card
)
SELECT
id_stock,
qty_entry,
qty_out,
maxTotal,
comment,
datetime
FROM
App.stock_card LEFT OUTER JOIN tmpTable ON 1 = 1
|
ประวัติการแก้ไข 2014-09-01 10:28:58 2014-09-01 10:35:38 2014-09-01 10:37:05 2014-09-01 10:38:23 2014-09-01 10:49:38 2014-09-01 10:51:43 2014-09-01 10:58:36
 |
 |
 |
 |
Date :
2014-09-01 10:26:52 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จาก #NO1 - #NO2 คุณคงได้คำตอบแล้ว
ผมมีข้อสงสัยที่มีประโยชน์อย่างยิ่งยวด ดังนี้ครับ
Code (SQL)
SELECT * FROM TableXXX
สมมุติว่าได้จำนวนมา 100 ระเบียน(Rows) มันส่งมาให้ครั้งเดียว
แต่ผมอยากได้แบบนี้ ได้เท่าไหร่ทะยอยส่งมา 1, 2, 3, จนครบ 100 ระเบียน
ถ้าคุณยังไม่เข้าใจ ก็ให้คิดง่ายแบบนี้ครับ สมมุติผมให้คุณนับตัวเลขในใจ จาก 0 - 100
คุณนับ 1 คุณบอกผมมา, คุณนับ 2 คุณบอกผมมา, ... , และคุณก็นับไปเรื่อยฯ จนครบ 100 นั่นแหละครับ
เผื่อคำถามของผมมันไม่ชัดเจน ผมอธิบายด้วย Coding ดังนี้ครับ
Code (C#)
public static IEnumerable<int> yieldReturnValue()
{
for (int i = 0; i < 101; i++) {
yield return i;
}
}
ต้องทำอย่างไร/มันสามารถทำได้หรือไม่
|
ประวัติการแก้ไข 2014-09-01 11:09:41 2014-09-01 11:18:03
 |
 |
 |
 |
Date :
2014-09-01 11:07:12 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|