Post by Goborijung at 2021-05-15 11:55:01 | ID: 1193
https://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/Ex
-- Default Date : 1990-08-02 Select Convert(nvarchar,cast('1990-08-02' as date),105) as cDate // Out : 02-08-1990
Post by Goborijung at 2024-08-30 13:18:29 | ID: 2018
SELECT CONVERT(VARCHAR(10), 123456) //output : 123456
Post by Goborijung at 2021-05-14 16:59:13 | ID: 1192
Select DATEDIFF(year, '1990-08-02', '2021-05-14') AS DateDiff;ตัวอย่างการหาระยะเวลา ว่าห่างกันกี่นาที
Select DATEDIFF(MINUTE,'2022-07-25 11:50:44.787','2022-07-25 11:56:44.787') -- Out: 6 นาที
Post by Goborijung at 2020-08-18 09:40:17 | ID: 729
DECLARE @tblName nvarchar(20) = 'Branch' DECLARE @Query nvarchar(200) = '' SET @Query = 'SELECT TOP 1 * FROM ' + @tblName + ' WHERE OID = 1' EXECUTE sp_executesql @Query
Post by Goborijung at 2023-07-11 17:13:07 | ID: 1948
Declare @tblName varchar(100) = 'PDK1_M_PAOUNDAM'
Select ROW_NUMBER() over(Order by Column_Name) as No,Column_Name
,case Data_Type when 'datetime' then Data_Type
when 'bit' then Data_Type
when 'int' then Data_Type
when 'numeric' then Data_Type+'('+rtrim(cast(NUMERIC_PRECISION as char(5)))+','+rtrim(cast(NUMERIC_SCALE as char(5)))+')'
else Data_Type+'('+cast(Lengths as varchar(5))+')'
end as Data_Type
,Descs
From
(
Select name as Column_Name
/*,iif(is_nullable = 0 , 'F','T') as is_nullable*/
,(Select DATA_TYPE From INFORMATION_SCHEMA.COLUMNS Where TABLE_NAME = @tblName And COLUMN_NAME = sc.name) as Data_Type
,(Select CHARACTER_MAXIMUM_LENGTH From INFORMATION_SCHEMA.COLUMNS Where TABLE_NAME = @tblName And COLUMN_NAME = sc.name) as Lengths
,(Select NUMERIC_PRECISION From INFORMATION_SCHEMA.COLUMNS Where TABLE_NAME = @tblName And COLUMN_NAME = sc.name) as NUMERIC_PRECISION
,(Select NUMERIC_SCALE From INFORMATION_SCHEMA.COLUMNS Where TABLE_NAME = @tblName And COLUMN_NAME = sc.name) as NUMERIC_SCALE
,(Select value From sys.extended_properties Where major_id = sc.object_id and minor_id = sc.column_id) as Descs
From sys.columns sc
Where object_id = (Select object_id From sys.tables Where name = @tblName)
) A
Order by Column_Name
Post by Goborijung at 2020-12-17 16:41:12 | ID: 901
SELECT CASE WHEN ISNULL(MAX(OIDSMPLMT), '') = '' THEN 1 ELSE MAX(OIDSMPLMT)+1 END AS newOIDMat FROM SMPLRequestMaterial
Post by Goborijung at 2020-07-01 10:31:45 | ID: 645
How to Create Function in MSSQL
>> Scalar Functions (User-Defined-Functions) | scalar function (scalar UDF)
IF OBJECT_ID (N'dbo.ufnGetInventoryStock', N'FN') IS NOT NULL
DROP FUNCTION ufnGetInventoryStock;
GO
CREATE FUNCTION dbo.ufnGetInventoryStock(@ProductID int)
RETURNS int
AS
-- Returns the stock level for the product.
BEGIN
DECLARE @ret int;
SELECT @ret = SUM(p.Quantity)
FROM Production.ProductInventory p
WHERE p.ProductID = @ProductID
AND p.LocationID = '6';
IF (@ret IS NULL)
SET @ret = 0;
RETURN @ret;
END;
SELECT ProductModelID, Name, dbo.ufnGetInventoryStock(ProductID)AS CurrentSupply
FROM Production.Product
WHERE ProductModelID BETWEEN 75 and 80;
-----------------------------------------------------------------------------------------
>> Table-Valued Functions | inline table-valued function (TVF)
IF OBJECT_ID (N'Sales.ufn_SalesByStore', N'IF') IS NOT NULL
DROP FUNCTION Sales.ufn_SalesByStore;
GO
CREATE FUNCTION Sales.ufn_SalesByStore (@storeid int)
RETURNS TABLE
AS
RETURN
(
SELECT P.ProductID, P.Name, SUM(SD.LineTotal) AS 'Total'
FROM Production.Product AS P
JOIN Sales.SalesOrderDetail AS SD ON SD.ProductID = P.ProductID
JOIN Sales.SalesOrderHeader AS SH ON SH.SalesOrderID = SD.SalesOrderID
JOIN Sales.Customer AS C ON SH.CustomerID = C.CustomerID
WHERE C.StoreID = @storeid
GROUP BY P.ProductID, P.Name
);
SELECT * FROM Sales.ufn_SalesByStore (602);
-----------------------------------------------------------------------------------------
>> Multi-statement table-valued function (MSTVF)
IF OBJECT_ID (N'dbo.ufn_FindReports', N'TF') IS NOT NULL
DROP FUNCTION dbo.ufn_FindReports;
GO
CREATE FUNCTION dbo.ufn_FindReports (@InEmpID INTEGER)
RETURNS @retFindReports TABLE
(
EmployeeID int primary key NOT NULL,
FirstName nvarchar(255) NOT NULL,
LastName nvarchar(255) NOT NULL,
JobTitle nvarchar(50) NOT NULL,
RecursionLevel int NOT NULL
)
--Returns a result set that lists all the employees who report to the
--specific employee directly or indirectly.*/
AS
BEGIN
WITH EMP_cte(EmployeeID, OrganizationNode, FirstName, LastName, JobTitle, RecursionLevel) -- CTE name and columns
AS (
SELECT e.BusinessEntityID, e.OrganizationNode, p.FirstName, p.LastName, e.JobTitle, 0 -- Get the initial list of Employees for Manager n
FROM HumanResources.Employee e
INNER JOIN Person.Person p
ON p.BusinessEntityID = e.BusinessEntityID
WHERE e.BusinessEntityID = @InEmpID
UNION ALL
SELECT e.BusinessEntityID, e.OrganizationNode, p.FirstName, p.LastName, e.JobTitle, RecursionLevel + 1 -- Join recursive member to anchor
FROM HumanResources.Employee e
INNER JOIN EMP_cte
ON e.OrganizationNode.GetAncestor(1) = EMP_cte.OrganizationNode
INNER JOIN Person.Person p
ON p.BusinessEntityID = e.BusinessEntityID
)
-- copy the required columns to the result of the function
INSERT @retFindReports
SELECT EmployeeID, FirstName, LastName, JobTitle, RecursionLevel
FROM EMP_cte
RETURN
END;
GO
SELECT EmployeeID, FirstName, LastName, JobTitle, RecursionLevel
FROM dbo.ufn_FindReports(1); Post by Goborijung at 2021-01-22 16:41:31 | ID: 643
>> Stored Procedure Syntax
CREATE PROCEDURE procedure_name
AS
sql_statement
GO;
EX.
CREATE PROCEDURE SelectAllCustomers
AS
SELECT * FROM Customers
GO;
>> Execute a Stored Procedure
EXEC procedure_name;
EX.
EXEC SelectAllCustomers;
--------------------------------------------------------------------------
>> Stored Procedure With One Parameter
CREATE PROCEDURE SelectAllCustomers @City nvarchar(30)
AS
SELECT * FROM Customers WHERE City = @City
GO;
EXEC SelectAllCustomers @City = 'London';
--------------------------------------------------------------------------
>> Stored Procedure With Multiple Parameters
CREATE PROCEDURE SelectAllCustomers @City nvarchar(30), @PostalCode nvarchar(10)
AS
SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode
GO;
EXEC SelectAllCustomers @City = 'London', @PostalCode = 'WA1 1DP';
>> ตัวอย่างการใช้งานจริง
USE [MDS]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE sp_Test
@oidSmpl int
, @oidSize int
, @oidColor int
AS
BEGIN
SET NOCOUNT ON;
Select * From SMPLRequest smpl inner join SMPLQuantityRequired q on q.OIDSMPL = smpl.OIDSMPL
END
GO
EXEC sp_Test @oidSmpl = 1, @oidSize = 1, @oidColor = 1;
Post by Goborijung at 2020-06-29 16:03:38 | ID: 642
ISNULL(Column,'1') // ถ้ามีค่าเป็น Null ให้มีค่าเป็น 1
Post by Goborijung at 2021-02-22 13:22:54 | ID: 1016
Select RIGHT('I Love You',3) as cutRight
// Output : You