發表文章

目前顯示的是有「SQL」標籤的文章

Excel_SQL_外部連結兩個工作表_單頭單身

有些國外大廠的ERP(如Oracel)轉出來的資料是分開的單頭單身,如果沒有相關報表串聯,這時候用SQL是一個不錯的選擇(另一個選擇是Power Query),如果用VBA的話可能要將兩個工作表資料先放同一個檔(比較少用VBA的SQL語法),代碼寫起來也花時間,下面用SQL語法相對簡單一些。 SELECT A.單據號碼,客戶名稱,品號,品名,數量,單價 FROM [單頭$] A LEFT OUTER JOIN   [單身$] B ON A.單據號碼=B.單據號碼 ORDER BY 客戶名稱

Excel_SQL_字元限制(當你得不到想要的,你就會得到經驗)

 當你得不到想要的,你就會得到經驗           這句話是最近看到的,不過卻是2007年時就出現的名言,最近才聽到,不過我感受到了,下面的SQL 程式碼要再擴充時( Excel中使用SQL字元太多無法運作 ),excel就出現錯誤訊息,N年前在前公司使用時好像有印象遇過一次,沒想到現在這麼快就遇到了,在這邊紀錄一下。           這時我想到的是Power Query的好用,不過大概要再過一陣子,表現出自己是一個重度數據使用者,這樣提出一個公司沒有出現過的office版本才有說服力( 我只是想要office 2016版 )。 PS.2022/1/14 我用SQL讓我的excel當掉,也因此可以從4G記憶體往上擴充記憶體。 select *,"20"& mid(請購單編號,4,2) as 年, switch(摘要 like "%維護營運費%","ORACLE相關" ,摘要 like "%ORACLE%","ORACLE相關" , 摘要 like "%Spam SQR%","Spam SQR相關" ,摘要 like "%UPS%","UPS不斷電" ,摘要 like "%不斷電%","UPS不斷電" ,摘要 like "%VM相關%","ERP、VM相關維護費用" ,摘要 like "%趨勢%","防毒相關" ,摘要 like "%防火%","防毒相關" ,摘要 like "%Fire%","防毒相關" ,摘要 like "%Storage%","Storage及Server相關費用" ,摘要 like "%Server%","Storage及Server相關費用" ,摘要 like "%專案%","專案型支出" ,金額<10000,"其他金額...

Excel_SQL_HAVING+COUNT統計出現多次及單次的紀錄寫法

  下面的例子應該可以用在統計 同一銷售客戶同一品號兩個報價 以上, 以及 同一品號只有一個供應商提供 ,也許會讓電腦不夠強的當掉。(如果用Power Query 就能解決比較複雜的狀況) ' ..........................統計兩次紀錄以上資料 SELECT  A.料號,品名,單位,倉別,庫存數 FROM [物料表$] A ,  ( SELECT 料號 FROM [物料表$] GROUP BY 料號 HAVING COUNT(料號) >1 ) B  WHERE A.料號 =B.料號 '----------------------------------------------------統計單次 SELECT * FROM [程式清單$] A WHERE ( SELECT COUNT(程式代號) FROM [程式清單$] WHERE 程式代號=A.程式代號 )=1 '----------------------------------統計單次另一種方式 SELECT *  FROM [程式清單$]   WHERE 程式代號 IN  ( SELECT 程式代號 FROM [程式清單$] GROUP BY 程式代號 HAVING COUNT(程式代號)=1 )

Excel_SQL_INNER JOIN連接不同格式表格

  將不同格式相同key的資料聯結 SELECT 學生姓名,性別,年齡,課程名稱,老師姓名 FROM ([學生$] A INNER JOIN [課程$] B ON A.編號=B.編號) INNER JOIN [老師$] C ON B.編號=C.編號 ORDER BY 課程名稱

Excel_SQL_Switch使用

以前使用過Switch方式處理資料,去年底以來一直使用Power Query,對於SQL的語法有點生疏,還好還是試出來了。  select *,int((離職日-到職日)/365) as 年資, switch ( [CF_DEPT_CABBR] like "%AC%","AC課" ,[CF_DEPT_CABBR] like "%RAD%","RAD課" ,[CF_DEPT_CABBR] like "%工程%","工程課" ,[CF_DEPT_CABBR] like "%線外%","線外加工課" ,[CF_DEPT_CABBR] like "%資材%","資材部" ,[CF_DEPT_CABBR] like "%擠%","擠型課" ,[CF_DEPT_CABBR] like "%生技%","生技課" ,[CF_DEPT_CABBR] like "%會計%","財務會計處" ,[CF_DEPT_CABBR] like "%財務%","財務會計處" ,[CF_DEPT_CABBR] like "%管理課%","管理課" ,[CF_DEPT_CABBR] like "%物流課%","物流課" , true ,[CF_DEPT_CABBR]) as 部門 from ['離職名單2020-2021$'] where 到職日 is not null

SQL_計算年資(不聰明的方式)

Excel環境的SQL無法使用更新方式的方式,譬如today 或是 date的方式,也許可以,但目前還沒找到,因此用了下面不聰明的方式處理 DATEDIFF("yyyy",時間,DATE()) select *, #2021/12/29# As 今天 , int((今天-[ENTR_DATE])/365) as 年資,switch( [DEPT_CNAME] like "%AC%","AC課" ,[DEPT_CNAME] like "%RAD%","RAD課" ,[DEPT_CNAME] like "%工程%","工程課" ,[DEPT_CNAME] like "%線外%","線外加工課" ,[DEPT_CNAME] like "%資材%","資材部" ,[DEPT_CNAME] like "%擠%","擠型課" ,[DEPT_CNAME] like "%生技%","生技課" ,[DEPT_CNAME] like "%會計%","財務會計處" ,[DEPT_CNAME] like "%管理課%","管理課" ,true,[DEPT_CNAME]) as 部門 from [在職名單1228$]

SQL_基本語法(使用環境_Excel)

     新環境沒有的Office沒有達到Power Query的最低配置office 2016,只能把以前的方法拿出來用,VBA+SQL,現在開始記錄一下各種寫法 select * from ['Select_accounts$'] where 業務 not like "%二%" and 業務 not like "%一%"  select distinct 部門代碼 from [fnd_gf\m_15542471$] where 來源 like "M%" and 部門代碼 not in ('1184','1488','1531','1568','1698','43')