跳到主要內容

發表文章

【SQL】利用JOIN精簡或擴大

🎯 INNER JOIN:精簡出共有的資料。 🎯 LEFT JOIN & RIGHT JOIN:以左邊/右邊的表為主結合出共有的資料。 🎯 FULL JOIN:列出所有表的全部資料。

【SQL】日期運算DATEDIFF & DATEADD

🎯 DATEDIFF:算出日期的間隔,傳回整數(可為正負號)。 用法:DATEDIFF ( datepart , startdate , enddate ) ► datepart:要計算的間隔單位 ► startdate & enddate:開始日期跟結束日期 EX ---直接利用函數處理某指定日期,亦可以換成日期欄位 SELECT DATEDIFF ( DAY,'2017-11-01','2017-11-14') AS 'DAYS' Rusult DAYS 13 🎯 DATEADD:將日期加上指定值,傳回日期。 用法:DATEADD (datepart , number , date ) ► datepart:要計算的間隔單位 ► number:指定數值 ► date :要被加上的原始日期 EX ---直接利用函數處理某指定日期,亦可以換成日期欄位 SELECT DATEADD ( MONTH,5,'2017-11-14') AS 'DATE' Rusult DATE 2018-04-14 00:00:00.000

【SQL】ISNULL用來對付NULL值

🎯 ISNULL函數:利用指定值找出NULL值。 用法:ISNULL( check_expression, replacement_value) ► check_expression:用來檢查的欄位、運算式...可以是任何類型。 ► replacement_value:檢查出check_expression內為NULL值須回傳的值。需要為可以轉換成check_expression的類型。 作為判斷條件 ---利用COSMETIC資料庫 USE [COSMETIC] GO SELECT [NAME], [SUBJECT], CASE WHEN ISNULL(B1.[CONTEXT],'') <>'' THEN B1.[CONTEXT] WHEN ISNULL(B2.[CONTEXT],'') <>'' THEN B2.[CONTEXT] ELSE B.[CONTEXT] --- 利用ISNULL去判斷,如果非NULL值,抓取不同欄位 FROM [dbo].[ORIGINAL] A LEFT JOIN [dbo].[DETAIL] B ON A.[PK] = B.[KEY] LEFT JOIN [dbo].[DETAILII] B1 ON B.[D1] = B1.[KEY] LEFT JOIN [dbo].[DETAILIII] B2 ON B.[D2] = B2.[KEY] Reference: http://sharedderrick.blogspot.tw/2012/06/t-sql-isnull.html