2009年4月17日 星期五

列舉資料比對

如何,在以逗點分隔的列舉資料內,找出特定ID值.
例如, 找出以下 remark 欄位資料,有值為 c, 而不是cd者.

ITEM REMARK
---------- -------------
aaa a,b
bbb b,d
ccc a, b ,c ,d
ddd ab,cd,e
 
方法:
1. 消除空白
2. 前後包逗點
3. 利用like比對資料, 如下,
 
select item, remark
from tb
where (','|| replace(remark,' ','') || ',') like ('%,c,%');
 
ITEM REMARK
---------- ------------
ccc a, b ,c ,d

 
Note: 進階一點,還可以將like的對象,與其他Table欄位關聯,像MySQL的例子這樣子...
SELECT B.item, sum(A.money) as A_money
FROM B, A
WHERE CONCAT(',', B.nos, ',') Like CONCAT('%,', A.id, ',%')
GROUP BY B.item;

2009年4月9日 星期四

MSN 9.0 移除方法

MSN 9.0 免安裝版無法移除的解決方法

1. 使用 Windows Installer CleanUp 公用程式,清除 Windows Installer 資料庫中的項目。
a. 下載並安裝 Windows Installer CleanUp 公用程式。
url:http://support.microsoft.com/default.aspx?scid=kb;zh-tw;290301
b. 啟動公用程式,再按一下公用程式所找到的任何 Messenger 項目,然後按一下 [移除]。

2. 安裝(或使用)其他版本的 MSN Messenger
a. Messenger 最新版本 http://get.live.com/messenger
b. 若原本的舊版本 MSN 仍在系統內, 利用 regedit 搜尋所有當初 msn 9.0 的安裝路徑,
並手動刪除之(滿多的呢), 然後執行舊版本 MSN, 即可恢復正常.

SQL 各季日期統計

判斷資料是屬於哪一季的,然後分別予以加總,
年度開始日期 : trunc(sysdate,'Y')
第一季的結束日期 : add_months(trunc(sysdate,'Y'),3 )-1
...
第四季的結束日期 : add_months(trunc(sysdate,'Y'),12)-1

select UNIT,
sum(case when txdate< trunc(sysdate,'Y') then AMT else 0 end) BeginAMT,
sum(case when txdate<=(add_months(trunc(sysdate,'Y'),3 )-1) then AMT else 0 end) Q1,
sum(case when txdate<=(add_months(trunc(sysdate,'Y'),6 )-1) then AMT else 0 end) Q2,
sum(case when txdate<=(add_months(trunc(sysdate,'Y'),9 )-1) then AMT else 0 end) Q3,
sum(case when txdate<=(add_months(trunc(sysdate,'Y'),12)-1) then AMT else 0 end) Q4
from TABLENAME
where txdate <= sysdate
group by UNIT;