集合運算子 Union (聯集):垂直合併兩資料表。(沒有重複資料) Union All(聯集):垂直合併兩資料表。(有重複資料) Except (差集):只取「第一個 select」但不存在「第二個 select」的資料。 將 table1 的資料減去 table2的資料 (相當於是減法運算的概念) Intersect (交集):將兩資料表相同的資料取出來 (無重複的...
[SQL] 求負責人的總業績(差集Except)
IN可能存在的效能疑慮(效能差),可以使用EXISTS取代。 範例 取得包含於負責人清單,但不包含分店負責人清單中的負責人的總販賣業績(販賣單價*數量)。 (差集Except概念) Exists + Execpt 差集 select sum(B.販賣單價*A.數量) "總業績" from [dbo].[販賣資料] A join [dbo].[商品清單] B on B....
[SQL] 集合運算子 Except (差集)
Minus會取得兩個Select語法間的差,只有Oracle才能使用。 Sql Server 可以使用 Except。 範例 取得存在於負責人清單的負責人id、姓名,但是不存在於分站負責人清單的分店負責人的負責人列表 --取得存在於負責人清單的負責人id、姓名,但是不存在於分站負責人清單的分店負責人的負責人列表 --差集概念, 可以用Except select [負責人ID], [...
[SQL] 根據月份統計商品別的數量 Sum()、Case(When Then Else)
範例 取得月份別的商品別販賣數量。 行(Column)設定為月份別(2006/4、2006/5、2006/6) select B.商品名稱, sum( case when datepart(yyyy, [處理日]) = 2006 and datepart(mm, [處理日]) = 4 then A.數量 ...
[SQL] Order By 1 什麼意思?
order by 1:數字1表示按select的第一個欄位排序。 order by 1,2,3:ORDER BY後面的數字 1,2,3 分別代表select後面的第1、第2、第3個欄位。 比如,使用Union集合運算子時,當各select語法中的欄位名有所不同時,就要在order by語法中指定「欄位編號」。 範例 select [負責人ID], [負責人姓名] from ...
[SQL] 集合運算子 Union All 聯集 (有重複列Row)
Union All一樣會取得複數的select語法的和,與Union不同的地方是在於「包含重複列(Row)」,也就是說,有重複資料的列(Row)也會輸出。 語法 select a, b from table1 union all --union all 寫在select與select語法之間 select c, d from table2 範例一 同時取得負責人清單的負責人ID、姓...
[SQL] 集合運算子 Union 聯集 (沒有重複列Row)
Union是用來取得多個select語法之和的集合運算子(聯集)。Union會將重複的列(Row)刪除。 透過Union集合運算,可以把不同資料表的結合體拿來做邏輯運算。 語法 只要將union寫在select與select語法之間即可 兩個select語法的格式與欄位數量(column)必須相等 如果欄位數量(column)不相等,就要放入null使其相等 sele...
[SQL] 以月為單位的加減運算 Dateadd()
語法 Dateadd(datepart, number, date) datepart單位可以指定加減運算的單位year、month、day。 範例 (以月為單位) 求得現在日期的上個月之相同日期 select DATEADD(MONTH, -1, GETDATE()) "上個月相同日期" 範例 (以日為單位) 求得昨天、今天、明天的日期 select DATEADD(DAY...
[SQL] 根據年月取得第一天和最後一天
取得當月、年的第一天和最後一天 -- 當月第一天 select dateadd(month, datediff(month, 0, getdate()), 0) -- 當月最後一天(想法:下個月的第一天減去一天) select dateadd(month, datediff(month, 0, dateadd(month, 1, getdate())), -1) -- 當年第一天 sele...
[SQL] 求兩日期間的相差日數 Datediff()
取得兩個日期之間的相差日數,可以用Datediff()函數求得由特定日期到今天為止的「經過日數」,或是由今天到特定日期為止的「剩餘日數」。 語法 Datediff(datepart, date1, date2) 用datepart單位來取得date1到date2的差額,datepart的單位與Dateadd()函數一樣,可以指定year、month、day。 求剩餘日數 顯示到月底為...