2013年5月24日 星期五

TIPS: TFS - Checking in operation notice...

案例:
我們手上有檔案需要幫忙簽入(check-in)TFS。

有下列操作方式:
1. 在 VS 裡貼上檔案。(簡易)
用VS開啟簽出(check-out)的Solution,再將要簽入的檔案貼上適當的位置,VS會彈跳對話框問是否要覆蓋,選「是的」,即可看到檔案已異動過(Pending Changes)。

2. 在檔案總管貼上檔案。(複雜)
在 TSF 簽出到本地端(Local)後,當我們將檔案覆蓋掉簽出的檔案,但開啟VS後並不會看到檔案已異動過,這時可在Solution上按滑鼠右鍵,再選擇「Check Out for Edit...」,選後結果可以看到檔案全部變成「edit」的狀態,再到Solution滑鼠右鍵選擇「Undo Pending Changes」,確認後,VS會針對異動過的檔案一個個詢問「XXX檔已經異動過,是否要undo成修改前?」,選擇「No to All」,就可以在Pending Changes看到了。

結論:
基上Microsoft的版本控制必須由它的介面(VS...)來操作會比較恰當,看起來不建議在檔案總管來操作。

2013年5月21日 星期二

MSSQL查詢資料Row(s) to String

Words: row to one line, rows to string

已存在資料如下:
代碼表(code table):
code name
A apple
B banana
L lemon


資料列(data):
id name fruit_code quota rest
1 Alice A 50 12
2 Alice B 40 9
3 Bob L 30 22
4 Bob A 30 8

預期查詢結果如下輸出:

查詢結果(result):

name Total Rest Detail
Alice 69 A-apple(38),B-banana(31)
Bob 30 L-lemon(8),A-apple(22)

SQL語法:
select 
  name
  , sum(quota)-sum(rest) 'Total Rest'
  ,STUFF(
     (select 
           ','
          +cast(fruit_code as varchar)
          +'-'
          +(select name from fruit_code t3 where t3.code=t1.fruit_code)
          +'('+cast(quota-rest as varchar)+')'
      from usage t1 
      where t1.name=t2.name 
      for xml path(''))
     ,1
     ,1
     ,''
  ) Detail
from usage t2
group by name