Post by Goborijung at 2023-04-10 16:03:54 | ID: 1875
SELECT ROUND(10.45,0) AS UnitPrice --10.00 SELECT ROUND(32.56,0) AS UnitPrice --33.00
Post by Goborijung at 2019-12-06 15:15:41 | ID: 222
SELECT * FROM table_name Ex. SELECT * FROM Customer
Post by Goborijung at 2021-03-03 10:25:07 | ID: 256
/* ตัวอย่างการใช้ Pivot */
SELECT * FROM( SELECT
Customer,
MONTH(ETADate) AS months,
ORDQTYPCS
FROM TM_SO WHERE YEAR(ETADate) = 2018
)
TM_SO
PIVOT
(
SUM(ORDQTYPCS)
FOR months IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])
) pvt
ORDER BY Customer
/* ตัวอย่างการใช้ Subquery */
Select * From (
Select CONo,ItemCode,Item,QtyPcs From (
select c.SerialNumber,c.CONo,c.Branch,c.Department,c.DefaultBranch,ct.ItemCode,ct.Item,i.Code,ct.Model,ct.Size,ct.Color,ct.QtyPcs
from Carton c inner join CartonDetail ct on ct.Carton = c.OID left join Item i on i.OID = ct.Item
where c.SerialNumber IN('FG190831000009','FG190831000010','FG190831000011','FG190831000012','FG190831000013','FG190831000014')
) s2
) s1
PIVOT
(
SUM(QtyPcs)
FOR ItemCode IN ([FC-P4L18RSM300XXL-BK])
) pvt
/* ตัวอย่างที่ 2 */
/*--------จากตาราง-----------
ValueName ValueData
SellPrcOther 0
SellPrcBruma 0
SellPrcChina 0
-------------------------*/
Select * From (
-- ทำการ Select ValueName,ValueData จากตาราง zvalue (เราจะเอา ValueName มาทำเป็น Colume)
SELECT ValueName,ValueData from zvalue Where ValueName in('SellPrcOther','SellPrcBruma','SellPrcChina')
) s1
PIVOT
(
max(ValueData) -- เราจะเอา ValueData มาใส่ให้กับแต่ละ Columns
FOR ValueName IN (SellPrcOther,SellPrcBruma,SellPrcChina) --(เราจะเอา ValueName มาทำเป็น Colume)
) pvt
/*---------------- ผลลัพธ์ที่ได้ -------------------
SellPrcOther SellPrcBruma SellPrcChina
0 0 0
---------------------------------------------*/
Post by Goborijung at 2019-12-09 13:22:43 | ID: 250
Ex. -- การหาค่าเฉลี่ยของราคาสินค้าทั้งหมด SELECT AVG(ListPrice) FROM Product -- การหาค่าเฉลี่ย โดยตัดราคาที่ซ้ำกันออกก่อน แล้วค่อยหาค่าเฉลี่ย SELECT AVG(DISTINCT ListPrice) FROM Product
Post by Goborijung at 2019-12-09 13:17:10 | ID: 249
Ex. SELECT DISTINCT Color FROM Product WHERE Color IS NOT NULL ORDER BY Color หรือจะใช้ GROUP BY แทนก็ได้ SELECT Color FROM Product WHERE Color IS NOT NULL GROUP BY Color ORDER BY Color
Post by Goborijung at 2019-12-09 10:19:49 | ID: 243
SELECT column_id SUM(column_name) AS new_var FROM table_name WHERE YEAR(column_date) = 2019 GROUP BY column_id Ex. SELECT CustomerID SUM(SubTotal) AS Total, COUNT(*) AS TotalBill FROM SalesOrder WHERE YEAR(OrderDate) = 2012 GROUP BY CustomerID
Post by Goborijung at 2021-01-15 15:12:44 | ID: 246
คำสั่ง HAVING ใช้กรองข้อมูลที่ได้จาก GROUP BY HAVING จะใช้ตรวจสอบผลที่ได้จากการจัดกลุ่มแล้วเท่านั้น Ex. SELECT CustomerID SUM(SubTotal) AS Total, COUNT(*) AS TotalBill FROM SalesOrder WHERE YEAR(OrderDate) = 2019 GROUP BY CustomerID HAVING SUM(SubTotal) >= 100000 จากตัวอย่าง จะเห็นว่าเงื่อนไข WHERE เป็นการดึงข้อมูลเฉพาะปี 2019 จากนั้น จะจัดกลุ่มและหาผลรวมของยอดซื้อ จากนี้น จะนำผลรวมไปตรวจสอบว่า มียอดสั่งซื้อตั้งแต่ 100,000 บาทขึ้นไปหรือไม่ ถ้ามีก็ให้แสดงข้อมูลออกมา >> ตัวอย่าง Query จริง (gssv2) SELECT PONo, SUM(UnitCost) AS TotalUnitCost, COUNT(*) AS TotalBill FROM TM_PO WHERE YEAR(PODate) = 2019 GROUP BY PONo HAVING SUM(UnitCost) >= 100000
Post by Goborijung at 2019-12-10 09:12:07 | ID: 258
INNER JOIN เป็นการเชื่อมตั้งแต่ 2 ตารางขึ้นไปเข้าด้วยกัน โดยอาศัยคอลัมที่มีความสัมพันธ์กัน มาทำการเชื่อมโยงข้อมูลเข้าด้วยกัน เงื่อนไขคือ ดึงเฉพาะคอลัมที่มีข้อมูลตรงกัน จากทั้งสองตาราง Ex. SELECT * FROM table_a INNER JOIN table_b ON table_a.ProductID = table_b.ProductID หรือ SELECT u.UserName,u.NickName,s.Name AS SectionName FROM [User] u INNER JOIN Section s ON u.Section = s.OID WHERE u.NickName IS NOT NULL หรือ SELECT u.UserName,u.NickName,s.Name AS SectionName FROM [User] AS u INNER JOIN Section AS s ON u.Section = s.OID WHERE u.NickName IS NOT NULL
Post by Goborijung at 2019-12-09 14:30:43 | ID: 254
Ex. SELECT ContactID,Name,LastName INTO new_table FROM old_table
Post by Goborijung at 2019-12-09 14:19:08 | ID: 253
Ex. SELECT NTILE(100) OVER(ORDER BY POQty) AS No, * FROM TM_PO จากตัวอย่าง จะเป็นการแบ่งกลุ่มข้อมูลออกเป็นกลุ่มละ 100