發表文章

目前顯示的是 2018的文章

[T-SQL] 使用 Pivot 語法彙總卻不彙總

圖片
在 SQL Server 中撰寫 T-SQL 應用 Pivot 語法,原本預期從左側的原始資料透過 Pivot 得到 (1) 的結果, 但偶而會遇到數值沒有合計,資料呈現為兩筆的狀況,如下圖 (2) 的狀況。 進一步了解,Pivot 語法中對於原始資料有三種概念 1.  column being aggregated 要彙總的資料行,此案例為 Amount 2.  column that contains the values that will become column headers 包含將變成資料行標頭之值的資料行,此案例為 Customer 3. first pivoted column, second pivoted column… ,此案例為 A001, A002 Pivot 計算過程會將上述之外的資料欄位進行群組,若有其他欄位值不相同者時則發生呈現多筆的狀況。 當發生類似的狀況可以檢查有否查詢多餘的欄位,從來源中移除欄位即可解決。 範例 /*原始資料*/ DECLARE @OrderTable as Table(ID int, Customer varchar(8), OrderDate date, Amount int) insert @OrderTable(ID, Customer, OrderDate, Amount) select 1, 'A001', convert(date, '2018-10-01'), 100 union all select 1, 'A001', convert(date, '2018-10-01'), 110 union all select 2, 'A001', convert(date, '2018-10-01'), 120 union all select 2, 'A001', convert(date, '2018-10-01'), 130 union all select 3, 'A002', convert(date, '2018-10-01'), 200; select * from @OrderTable; /*發生錯誤的 Pivo

Warn for DELETE All records

在  SQL Server Management Studio (SSMS) 中執行刪除所有資料時,是不會有任何提醒的!! 例如將 delete * from XX 看成 select * from XX,或者未加篩選條件時,都可以輕易地直接刪除整個資料表的所有資料。 防範類似的悲劇發生,可行做法: SQL Server 定期備份 當發生誤刪資料時,確保可以進行環原。 異動大量資料前,手動備份一次。 自製警告訊息 SSMS (v17.9) 目前沒有類似提醒的設定,不過可以在 delete trigger 加上類似的檢查,預防不小心刪除整個資料表,若真需要全部刪除前,再手動停用 Trigger,執行刪除後再手動啟Trigger。 建立刪除警告的 Trigger FOR DELETE AS BEGIN DECLARE @Count int SET @Count = @@ROWCOUNT; IF @Count >= (SELECT SUM(row_count) FROM sys.dm_db_partition_stats WHERE OBJECT_ID = OBJECT_ID('dbo.MyTable_LOG') AND index_id = 1) BEGIN RAISERROR('Cannot delete all rows at once.',16,1) ROLLBACK TRANSACTION RETURN; END END 停用 Trigger 語法 DISABLE TRIGGER [dbo].[RPTIMG_LOG_delete_trigger] ON [dbo].[RPTIMG_LOG] 啟用 Trigger 語法 ENABLE TRIGGER [dbo].[RPTIMG_LOG_delete_trigger] ON [dbo].[RPTIMG_LOG] 所有資料表,建立預防刪除所有資料的 Trigger /*----------------------------------

SSMS change Object Explorer Font Size

圖片
近日發現在筆電上使用 SQL Server Management Studio 中 Object Explorer 查找項目時,感覺字體太小越來越吃力。😅 若要調整其顯示字形與大小,目前沒有獨立的設定,只能透過修改全域環境字形達成。 從選單 Tools –> Options 開啟 Options 設定視窗,選擇 Environment –> Fonts and Colors –> Environment Font 再調整字形與大小。 調整後的效果如下圖

How to create Google APIs credentials

圖片
建立新 Project 進入 Google APIs & Services 後台, 點此連結 點擊 [Create] 輸入資訊後,點擊 [Create] 建立 Credentials 選擇 [OAuth client ID] Application type 選擇 Other 輸入 Name 點擊 [Create] 取得 Client ID 與 Client secret 後, 可以置入程式碼中呼叫 Google APIs。

如何將旅行照片顯示於地圖上

圖片
旅行時使用手機拍照,若有開啟 GPS 定位功能,每張照片會儲存地理座標,可以透過以下步驟,將照片顯示在地圖上,做為另一種記錄旅途的方式。 步驟一: 新增「Google我的地圖」 從瀏覽器進入 Google 雲端硬碟,網址 https://drive.google.com/drive/u/1/my-drive 點擊「+ 新增」> 「更多」 > 「Google我的地圖」 步驟二: 匯入相片 進入我的地圖左上方,點擊「匯入」 從「相簿」中挑選要放入地圖的照片後,點擊下方「選取」 回到主畫面後,就可以發現每張照片已顯示在地圖上,且自動標上地名。 手機安裝 App「 Google 我的地圖 」,也可以檢視。 其他補充 Google 我的地圖,「匯入」照片這功能只有瀏覽器上有,手機 App 只提供編輯地點的功能。 要區分每一天或每一主題的行程,可以利用「圖層」功能,新增圖層後再匯入下一批照片,之後可以顯示影藏不同的圖層。 瀏覽線上示範請點擊 < 連結 >。 參考 My Maps- Adding locations, images and videos to Google Maps [ Youtube ]

Export data to CSV – (1) Database

圖片
本文以 bcp 產生 csv 檔案工作流程的實作說明,當使用者要求匯出一份資料時,先將查詢語法組合為字串並建立新工作,透過 SQL Server Agent 排程執行輸出檔案。 bcp 基本語法 bcp 指令是 SQL Server 可以做大量資料匯入與匯出,在 DOS Command 環境下中執行,先用幾個範例認識 bcp 指令的用法。 (本文的範例是 Northwind 資料庫) 資料來源指定一個資料表或檢視 bcp dbo.Region out "E:\Region.csv" -S "(local)" -d Northwind -U sa -P mis123 –c 資料來源是一個 T-SQL 查詢語法 bcp "select * from dbo.Region" queryout "E:\Region2.csv" -t "," -S "(local)" -d Northwind -U sa -P mis123 -c 資料來源是執行一個預存程序 bcp "EXEC [dbo].[CustOrderHist] 'ALFKI'" queryout "E:\CustOrderHist.csv" -t "," -S "(local)" -d Northwind -U sa -P mis123 -c 加強 csv 在 Excel 的可讀性 產生欄位標題 以 bcp 產生的 csv 檔案是不包括欄位標題,找到解決方式是先產生一個欄位標題文字檔,再與 匯出的 csv 檔案合併為另一個檔案。 COPY 指令範例 COPY /V /Y /B E:\Temp\Header.txt + E:\Temp\DATA.temp E:\Temp\DATA.csv DEL E:\Temp\DATA.temp Header.txt 是欄位標題 DATA.temp 是 bcp 產生的 csv 格式的檔案 DATA.csv 是合併的新檔案名稱 當資料來源是預存程序時,SQL Server 2012 以後的版本可用 T-SQL 語法查詢得到欄位的標題 SELE

VS Code setup – JavaScript debugging

圖片
全新安裝 Visual Studio Code ,建立一組 JavaScript 與 HTML 網頁,並在 Visual Studio Code 中直接啟動 Debug 模式。 首先到微軟網站下載並安裝 Install Visual Studio Code 進入 IDE 介面,左側是主要功能區,以下會用到這三項: 檢視目前開啟的目錄 Debug 下載 VS Code Extension Install Extension 要模擬網站執行網頁與本機 Debug 需要安裝以下兩個 Extension ,可以直接從 IDE > Extension > 輸入 live server > Install (如下圖)。 或到網站下載安裝。 Live Server https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer 提供本機上的網站伺服器,支援動態編輯內容儲存後,網頁自動直接更新 Debugger for Chrome https://marketplace.visualstudio.com/items?itemName=msjsdiag.debugger-for-chrome 產品說明的很清楚: Debug your JavaScript code running in Google Chrome from VS Code. 安裝好兩個 Extension 後,關閉並重新開啟 VS Code 建立 Web 網站目錄與 launch.json 開啟一個全空的檔案目錄 index.html 中輸入 <h1></h1> <script src="./index.js"></script> index.js 中輸入 window.onload = function () { var myword="hello world!"; document.querySelector('h1').innerHTML=myword; } 新增 launch.json 點擊左側 Debug > [N

On lick to Deploy Azure SQL

圖片

PowerDesigner 異動 PDM 後產生 T-SQL

圖片
在 PowerDesigner 編修後可以產生完整所有資料表或其他結構的 T-SQL 語法,這動作適用於第一次建立資料庫。 日後有修改 PDM 內容時,可以透過檔案或連線資料庫進行差異比對,產生異動的 T-SQL 語法, 原理與 Visual Studio 資料庫專案做 Schema Compare 類似。 步驟如下: 1. 開啟 PDM ,點擊選單 Database > Apply Model to Database 2. 選擇 Archived PDM 的路徑,並產生新的 Archived 檔案 第一次產生的 T-SQL 語法時建議同時勾選 Automatic Archived,除了保留版本也可以作為日後比對的基礎。 若是沒有 Archived PDM 檔案,可以將 PDM 另儲存為 Archived PDM 格式。 Reference source: Modifying a Database http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc38058.1600/doc/html/rad1232021447225.html Archiving a PDM http://infocenter-archive.sybase.com/help/index.jsp?topic=/com.sybase.stf.powerdesigner.docs_12.0.0/html/daug/daugp22.htm