2021年9月23日 星期四

[SSRS] SSRS使用SQL Server Procedure(預存程序)做資料來源

 SSRS使用SQL Server Procedure做資料連結


[SQL Server] 預存程式(PROCEDURE),新增及修改

減少伺服器/用戶端網路流量

程序中的指令會以單一批次的程式碼來執行。 這可以大幅降低伺服器與用戶端之間的網路流量,因為網路之間只會傳送執行程序的呼叫。 若程序沒有提供程式碼封裝,則每個個別的程式碼行都會在網路上傳送。


更強的安全性

多個使用者和用戶端程式都可以透過程序,在基礎資料庫物件上執行作業,即使使用者和程式不具備這些基礎物件的直接權限亦可。 程序也會控制要執行哪些程序和活動,並保護基礎資料庫物件。 這可避免在個別物件層級授與權限的需求,而簡化安全層。


重複使用程式碼

任何重複資料庫作業的程式碼,都是程序中非常適合封裝的項目。 這可避免重複撰寫相同程式碼、減少程式碼不一致,並且可讓具備所需權限的任何使用者或應用程式存取及執行程式碼。


維護更簡易

當用戶端應用程式呼叫程序並將資料庫作業保留在資料層中時,若基礎資料庫中有任何變更,只有程序必須更新。 應用程式層會維持獨立,也不需要知道資料庫配置、關聯性或程序間有什麼變更。


提升效能

依預設,第一次編譯程序時,將執行並建立執行計畫,以利後續的執行中重複使用。 由於查詢處理器不需要建立新計畫,通常可以花較少的時間來處理程序。

2021年8月10日 星期二

2021年8月3日 星期二

2021年7月16日 星期五

[Google Sheet] Query函式裡 Select 需要比較日期時的用法

第一個方法是直接把儲存格的日期格式改成數值,例如2021/7/16就會44393,接著用以下公式

=QUERY(A:D,"select * where(A="&datevalue($K$2)&")",-1) =>把要比較的k2日期轉換成數值

=QUERY(A:D,"select * where(A=44393)",-1) =>如果知道數值的話可以直接比較


第二種方法是使用date把需要的日期轉換成系統的格式

 =QUERY(A:D,"select * where A= date'" & TEXT(K1,"yyyy-mm-dd") & "'",-1) 

2021年7月15日 星期四

[Google Sheet] 對多筆資料執行查詢作業

 在Google Sheet對多筆資料查詢,並顯示選取範圍內的資料

可以使用QUERY(範圍,查詢式,-1)

    範例資料

A1B1C1
A2B2C2
A3B3C3

    以這行查詢式查詢:=QUERY(A1:C3,"SELECT * WHERE(B='B1')",-1)可以得到以下結果
A1B1C1

[Google Sheet] 如何擷取其他Sheet的資料

Google Sheet 如何擷取其他Sheet的資料,使用IMPORTRANGE("要擷取的試算表網址","工作表名稱!範圍")

範例:

    取A1~C3的範圍

=IMPORTRANGE("AAA/edit#gid=0", "工作表1!A3:C3")

    取A~C的範圍

=IMPORTRANGE("AAA/edit#gid=0""工作表1!A:C")