2009年7月29日 星期三

三位一撇…好簡單

之前,想要在報表將金額的部份,需有「1,234」這樣的格式,
於是很直覺的想說在SQL撈資料時,就將其轉成「1,234」就好,
就上網去找看看有沒有什麼語法,在網路上,也看到有人自訂了函式來產生,
但,覺得有點麻煩,主要是覺得,這種東西應該很大眾化,大家都會有需求才對,
微軟應該會貼心一點才是,於是便往SQL的預設函式去尋找,後來找到了~~嘻嘻
是利用大家常用的「Convert」函式喲~~

MSDN:


實際的語法:
SELECT REPLACE(CONVERT(VARCHAR,CONVERT(MONEY,12345678.123),1),'.00','')

當然,若是想在報表要輸出,而不是透過SQL轉好再輸出,
則可以利用報表的「Format」函式來做。

格式語法:
Format(CLng(First( 欄位值 , "ds")),"###,###,###,##0")
(在前面有個CLng就是將其轉成數字格式,若是有小數點的話,則應該使用CDbl)

(以上測試,感謝 三趨科技 官大龍 協助)

2009年7月17日 星期五

預存程式的資料也可 Join 資料表

各位有沒有試過,將StoreProcedure裡的資料,再去join別的資料表呢?
之前遇到一個問題,就是原本的清單必須要還要再過濾一些條件,

但清單的資料已經是從StoreProcedure裡撈出來的,

StoreProcedure是共用的呀,我總不能為了自己的這個地方,

而去改共用的StoreProcedure,那這樣的話,不就會影響到其它的程式了,

那另外自己再寫一個查詢 SQL 咧?

偏偏那個 SQL 又是一長串,懶得自己再寫了。

於是就覺得,應該可以把StoreProcedure撈出來的資料,再去join別的資料表吧。

於是,又去拜訪了Google大神~~


嘿嘿嘿!!一下子就找到資料了,果然真的有嘛~~
--將查詢結果存入暫存資料表
create table #temp(mid nvarchar(10),memberchname nvarchar(10),uid nvarchar(32),unitname varchar(100))

insert into #temp EXEC spMemberList @uid

--只挑出8及5的值
select #temp.* ,B02POPESN,B02ADKIND from #temp
inner join p2kdb.dbo.CPABT02M on mid=B02IDNO
where (B02POPESN='8' or B02ADKIND='5')

drop table #temp