Post by Goborijung at 2019-12-06 15:18:19 | ID: 223
SELECT column1, column2, column_n FROM table_name Ex. SELECT userID, UserName, FullName FROM User
Post by Goborijung at 2019-12-06 15:55:10 | ID: 225
Ex. SELECT Description , POQty, unitCost, Amount=(POQty*UnitCost) FROM TM_PO WHERE NOT POQty = 5 SELECT Description , POQty, unitCost, Amount=(POQty*UnitCost) FROM TM_PO WHERE NOT POQty BETWEEN 1 AND 10
Post by Goborijung at 2019-12-06 15:40:15 | ID: 224
SELECT col1 , col2, co3, add_new_col=(col2*cal3) FROM table_name Ex. SELECT Description , POQty, unitCost, Amount=(POQty*UnitCost) FROM TM_PO SELECT Description , POQty, unitCost, Amount=(POQty*UnitCost) FROM TM_PO WHERE (POQty*UnitCost) > 300 SELECT Description , POQty, unitCost, Amount=(POQty*UnitCost) FROM TM_PO WHERE (POQty*UnitCost) BETWEEN 1000 AND 1500
Post by Goborijung at 2019-12-06 16:06:24 | ID: 226
SELECT Description , POQty, unitCost, Amount=(POQty*UnitCost) FROM TM_PO WHERE POQty = 1 AND (UnitCost=245 OR UnitCost=740) SELECT Description , POQty, unitCost, Amount=(POQty*UnitCost) FROM TM_PO WHERE POQty = 1 AND (UnitCost IN(245,740))
Post by Goborijung at 2020-02-21 08:29:09 | ID: 403
ref: https://www.bloggang.com/mainblog.php?id=cyberpig SET NOCOUNT ON ใน Stored Procedure ช่วย performance ระบบได้ คำสั่ง SET NOCOUNT ON เป็นการ "หยุด" การคืนค่า จำนวนบรรทัดที่ได้จากการ Select ของ SQL Server มาให้ผู้เรียก ผลของการหยุด COUNT นี้ ทำให้การคืนค่า หายไป แต่ผลพลอยได้คือ ระบบเร็วขึ้น และไม่รบกวนการ nest call ของ stored procedure (จากเรื่อง "Crystal Report ... ทำไม ข้อมูลไม่ออกฟะ" แต่ถ้าเรายังต้องการจำนวนบรรทัดที่ได้จากการเรียก procedure ก็สามารถใช้ตัวเลือก @@ROWCOUNT ได้อยู่ แม้จะ SET NOCOUNT ON ไปแล้วก็ตาม ใน SQL Server 2005 ของ Microsoft เวลาเราสั่งสร้าง Procedure ใหม่ มันใส่ SET NOCOUNT ON มาให้เลย
Post by Goborijung at 2021-02-23 09:06:20 | ID: 311
/* การใช้คำสั่ง IF..ELSE */ IF EXISTS (SELECT * FROM Branch) PRINT 'is exists' ELSE PRINT 'not exists' /* การใช้คำสั่ง BEGIN..END */ IF EXISTS (SELECT * FROM Branch) BEGIN DECLARE @Count Int SELECT @Count = COUNT(*) FROM Branch WHERE Name = 'Sai 4' PRINT CONVERT(varchar(20),@Count) + ' Record(s) found' END ELSE PRINT 'not exists' /* การใช้คำสั่ง CASE โดยใช้ค่ารับเข้าค่าเดียว */ SELECT Company,Name, CASE Name WHEN 'Sai 4' THEN 's4' WHEN 'SAI4-2' THEN 's4-2' ELSE 'Unknown' END AS tCompany FROM Branch /* การใช้ CASE สำหรับเงื่อนไขตามตรรกะ */ SELECT CONo, SUM(CASE WHEN MONTH(ETADate) = 1 THEN ORDQTYPCS ELSE 0 END) AS [1-Jan], SUM(CASE WHEN MONTH(ETADate) = 2 THEN ORDQTYPCS ELSE 0 END) AS [2-Feb], SUM(CASE WHEN MONTH(ETADate) = 3 THEN ORDQTYPCS ELSE 0 END) AS [3-Mar], SUM(CASE WHEN MONTH(ETADate) = 4 THEN ORDQTYPCS ELSE 0 END) AS [4-Apr], SUM(CASE WHEN MONTH(ETADate) = 5 THEN ORDQTYPCS ELSE 0 END) AS [5-May], SUM(CASE WHEN MONTH(ETADate) = 6 THEN ORDQTYPCS ELSE 0 END) AS [6-Jun], SUM(CASE WHEN MONTH(ETADate) = 7 THEN ORDQTYPCS ELSE 0 END) AS [7-Jul], SUM(CASE WHEN MONTH(ETADate) = 8 THEN ORDQTYPCS ELSE 0 END) AS [8-Aug], SUM(CASE WHEN MONTH(ETADate) = 9 THEN ORDQTYPCS ELSE 0 END) AS [9-Sep], SUM(CASE WHEN MONTH(ETADate) = 10 THEN ORDQTYPCS ELSE 0 END) AS [10-Oct], SUM(CASE WHEN MONTH(ETADate) = 11 THEN ORDQTYPCS ELSE 0 END) AS [11-Nov], SUM(CASE WHEN MONTH(ETADate) = 12 THEN ORDQTYPCS ELSE 0 END) AS [12-Dec], FORMAT(SUM(ORDQTYPCS),'#,##0.00') AS Total FROM TM_SO WHERE YEAR(ETADate) = 2018 GROUP BY CONo ORDER BY CONo /* การใช้ WHILE วนรอบเช็คข้อมูลตามเงื่อนไข */ DECLARE @loop int SET @loop = 1 WHILE @loop <= 10 BEGIN PRINT 'Loop : ' + CONVERT(VARCHAR(10),@loop) SET @loop+=1 END /* การใช้ WHILE ร่วมกับ BREAK */ DECLARE @loop int SET @loop = 1 WHILE @loop <= 10 BEGIN PRINT 'Loop : ' + CONVERT(VARCHAR(10),@loop) IF @loop = 3 BEGIN BREAK END SET @loop+=1 END /* การใช้ WHILE ร่วมกับ CONTINUE */ DECLARE @StartDate datetime, @CheckDate datetime SET @StartDate = '2018-05-22' SET @CheckDate = @StartDate WHILE YEAR(@StartDate) = YEAR(@CheckDate) BEGIN IF DATEPART(dw,@CheckDate) = 3 -- Sun:1 , Mon:2 , Tue:3 BEGIN PRINT 'Tueseday : ' + CONVERT(VARCHAR(20),@CheckDate,103) SET @CheckDate = DATEADD(day,7,@CheckDate) CONTINUE END SET @CheckDate = DATEADD(day,1,@CheckDate) END /* คำสั่ง GOTO กระโดดไปยังตำแหน่งที่ระบุไว้ */ DECLARE @TotalMarks int SET @TotalMarks = 55 IF @TotalMarks >= 50 GOTO Pass IF @TotalMarks < 50 GOTO Fail Pass: PRINT ' Congratulations : You pass the Examination ' RETURN Fail: PRINT ' You Failed! : Better Luck Next Time ' RETURN /* คำสั่ง WAITFOR ใช้สำหรับหน่วงเวลา */ WAITFOR DELAY '00:00:10' --wait 10 sec BEGIN SELECT * FROM [User] WHERE Section IS NOT NULL AND OID = 1 END /* คำสั่ง RETURN สังให้ออกจาก Query โดยไม่สนใจคำสั่งที่เหลืออยู่ */ IF NOT EXISTS(SELECT Name FROM Section WHERE Name = 'it') --ถ้าไม่มีชื่อ it ในคอลัม Name ให้หยุดประมวลผล BEGIN RETURN END SELECT * FROM Section
Post by Goborijung at 2019-12-16 16:24:18 | ID: 329
/* Inline Table-Valued Functions เป็นฟังก์ชั่นที่ ส่งค่ากลับออกมาในรูปแบบของตาราง โดยจะผ่านทางคำสั่งคิวรี่ SELECT ซึ่งจะได้ผลลัพธ์ออกมาในรูปแบบของ แถว และ คอลัมน์ ซึ่งก็คือลักษณะของตารางนั่นเอง */ /* Ex. */ CREATE FUNCTION udf_test001 ( @year int ) RETURNS TABLE AS RETURN ( SELECT CONo, SUM(CASE WHEN MONTH(ETADate) = 1 THEN ORDQTYPCS ELSE 0 END) AS [1-Jan], SUM(CASE WHEN MONTH(ETADate) = 2 THEN ORDQTYPCS ELSE 0 END) AS [2-Feb], SUM(CASE WHEN MONTH(ETADate) = 3 THEN ORDQTYPCS ELSE 0 END) AS [3-Mar], SUM(CASE WHEN MONTH(ETADate) = 4 THEN ORDQTYPCS ELSE 0 END) AS [4-Apr], SUM(CASE WHEN MONTH(ETADate) = 5 THEN ORDQTYPCS ELSE 0 END) AS [5-May], SUM(CASE WHEN MONTH(ETADate) = 6 THEN ORDQTYPCS ELSE 0 END) AS [6-Jun], SUM(CASE WHEN MONTH(ETADate) = 7 THEN ORDQTYPCS ELSE 0 END) AS [7-Jul], SUM(CASE WHEN MONTH(ETADate) = 8 THEN ORDQTYPCS ELSE 0 END) AS [8-Aug], SUM(CASE WHEN MONTH(ETADate) = 9 THEN ORDQTYPCS ELSE 0 END) AS [9-Sep], SUM(CASE WHEN MONTH(ETADate) = 10 THEN ORDQTYPCS ELSE 0 END) AS [10-Oct], SUM(CASE WHEN MONTH(ETADate) = 11 THEN ORDQTYPCS ELSE 0 END) AS [11-Nov], SUM(CASE WHEN MONTH(ETADate) = 12 THEN ORDQTYPCS ELSE 0 END) AS [12-Dec], SUM(ORDQTYPCS) AS Total -- FORMAT(SUM(ORDQTYPCS),'#,##0.00') AS Total FROM TM_SO WHERE YEAR(ETADate) = @year GROUP BY CONo ) GO /* USE : SELECT * FROM dbo.udf_test001(2018) ORDER BY CONo หรือ SELECT TOP 1 * FROM dbo.udf_test001(2018) ORDER BY CONo */
Post by Goborijung at 2019-12-16 16:23:19 | ID: 328
/* Scalar Functions เป็นฟังก์ชั่นที่ให้ค่าผลลัพธ์แบบส่งกลับเพียงค่าเดียว โดยจะมีการส่งผ่าน Parameter เข้าไป หรือ ไม่มีก็ได้ */ /* Ex1 */ USE [GSSv2_Prod] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION udf_GetThaiDate ( @Date datetime ) RETURNS varchar(20) AS BEGIN DECLARE @ThaiDate varchar(20) DECLARE @ThaiMonth varchar(60) SET @ThaiMonth = 'ม.ค ก.พ มี.ค เม.ย พ.ค มี.ย ก.ค ส.ค ก.ย ต.ค พ.ย ธ.ค ' SET @ThaiDate = CAST(DAY(@Date) AS varchar(2)) + '' + SUBSTRING(@ThaiMonth,(MONTH(@Date)*5) -4,5) + '' + CAST(YEAR(@Date) +543 AS varchar(4)) RETURN @ThaiDate END GO /* USE : SELECT dbo.udf_GetThaiDate(GETDATE()) */ /* Ex2 */ CREATE FUNCTION GetDiffAmount ( @pAmount1 DECIMAL(18,2), @pAmount2 DECIMAL(18,2) ) RETURNS DECIMAL(18,2) AS BEGIN DECLARE @diffAmt DECIMAL(18,2) SET @diffAmt = @pAmount1 - @pAmount2 RETURN @diffAmt END GO /* USE : SELECT dbo.GetDiffAmount(10,15) */
Post by Goborijung at 2019-12-10 10:40:47 | ID: 263
คำสั่ง JOIN JOIN เป็นการเชื่อมข้อมูลตั้งแต่ 2 ตารางขึ้นไป โดยใช้คำสั่งคิวรี่เพี่ยงคำสั่งเดียว ผลลัพธ์ของคิวรี่ที่ได้จะเป็นข้อมูลชุดใหม่ ที่ได้จากการเชื่อมของตาราง ประเภทของการ JOIN จะประกอบไปด้วย INNER JOIN OUTER JOIN CROSS JOIN SELF JOININNER 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 NULLOUTER JOIN
เป็นการเชื่อมตั้งแต่ 2 ตารางขึ้นไปเข้าด้วยกัน ผลของการเชื่อมจะยึดตามรารางใดตารางหนึ่งตามที่กำหนด หรือ นำรายการของตารางทั้งหมดมารวมกัน ประกอบด้วย LEFT OUTER JOIN เชื่อมโดยยึดตารางทางด้านซ้ายมือของคำสั่ง RIGHT OUTER JOIN เชื่อมโดยยึดตารางทางด้านขวามือของคำสั่ง FULL OUTER JOIN เชื่อมตารางทางด้านซ้ายมือและขวามือเข้าด้วยกันLEFT OUTER JOIN
เป็นการเชื่อมตาราง ตั้งแต่ 2 ตารางเข้าด้วยกัน โดยจะตรวจสอบข้อมูลในคอลัมน์ที่ใช้เป็นเงื่อนไขในการเชื่อมโยงทั้ง 2 ตาราง โดยจะแสดงแถวข้อมูลจากตารางซ้ายทั้งหมด ส่วนตารางฝั่งขวา จะแสดงเฉพาะแถวที่มีเงื่อนไขตรงกับตารางฝั่งซ้ายเท่านั้น Note:: ตารางฝั่งซ้าย (ตารางที่ถูกประกาศก่อน) จะถูกแสดงทั้งหมด ตารางฝั่งขวา (ตารางที่ถูกประกาศทีหลัง) จะแสดงเฉาะแถวที่มีเงื่อนไขของข้อมูล ตรงกันกับตารางทางฝั่งซ้ายเท่านั้น Ex. SELECT * FROM table_a AS a LEFT OUTER JOIN table_b AS b ON a.column_name = b.column_name Ex. SELECT * FROM Section AS s LEFT OUTER JOIN [User] AS u ON s.OID = u.Section WHERE u.NickName IS NOT NULLRIGHT OUTER JOIN
เป็นการเชื่อมตาราง ตั้งแต่ 2 ตารางเข้าด้วยกัน โดยจะตรวจสอบข้อมูลในคอลัมน์ที่ใช้เป็นเงื่อนไขในการเชื่อมโยงทั้ง 2 ตาราง โดยจะแสดงแถวข้อมูลจากตารางขวาทั้งหมด ส่วนตารางฝั่งซ้าย จะแสดงเฉพาะแถวที่มีเงื่อนไขตรงกับตารางฝั่งขวาเท่านั้น Note:: ตารางฝั่งซ้าย (ตารางที่ถูกประกาศก่อน) จะถูกแสดงทั้งหมด ตารางฝั่งขวา (ตารางที่ถูกประกาศทีหลัง) จะแสดงเฉาะแถวที่มีเงื่อนไขของข้อมูล ตรงกันกับตารางทางฝั่งซ้ายเท่านั้น Ex. SELECT * FROM table_a AS a RIGHT OUTER JOIN table_b AS b ON a.column_name = b.column_name Ex. SELECT * FROM Section AS s RIGHT OUTER JOIN [User] AS u ON s.OID = u.Section WHERE u.NickName IS NOT NULLFULL OUTER JOIN
เป็นการเชื่อมตาราง ตั้งแต่ 2 ตารางเข้าด้วยกัน โดยนำข้อมูลในตารางทั้งฝั่งซ้ายมือ และ ขวามือมารวมกัน Ex. SELECT * FROM table_a AS a FULL OUTER JOIN table_b AS b ON a.column_name = b.column_name Ex. SELECT * FROM Section AS s FULL OUTER JOIN [User] AS u ON s.OID = u.Section WHERE u.NickName IS NOT NULLCROSS JOIN
เป็นการเชื่อมตารางตั้งแต่ 2 ตารางขึ้นไป โดยนำทุกๆแถวของตารางหนึ่ง มาเชื่อมกับข้อมูลทุกๆแถวของอีกตารางหนึ่ง ซึ่ง จำนวนแถวที่ได้ จะเท่ากับผลคูณของตารางที่นำมาเชื่อมกัน Ex. SELECT * FROM Section AS s CROSS JOIN [User] AS u WHERE u.NickName IS NOT NULL
Post by Goborijung at 2019-12-10 14:12:06 | ID: 267
SQL SERVER All Function แบ่งตามกลุ่มใหญ่ๆ 1. Aggregate Function 2. Mathematical Function 3. String Function 4. Date Function 5. Ranking Function 6. Null Function 7. Converting Data Type Function 8. System Function