2013年6月6日 星期四

動態將多筆資料的特定欄位依分隔符號組成字串

請參考來源
--

可運用  FOR XML PATH('') 來處理

SELECT T1.id, (  STUFF( (
           SELECT ',' + [name]
           FROM   t
           WHERE  T.id = T1.id
           FOR XML PATH('')
          ), 1, 1, ''
       )
) AS [name]
FROM  T1
GROUP BY id

多筆記錄合併成一筆

參考引用
--
***這個方法是採用迴圈方式去處理

假設TableA為 tableA(food,price),裡面有資料如下:
food  |  price
西瓜      20
蘋果      50
香蕉      20
鳳梨      30

接下來想把相同金額的水果進行分類,想要的格式如下:
(用逗號分隔水果的話,輸出成csv格式就會自動再分格成不同欄位唷!)
#tempA

price | food
20       西瓜,香蕉
30       鳳梨
50       蘋果



指令:

--先將
select distinct price , cast(' ' as varchar(max))  into #tempA from tableA

--宣告游標
DECLARE food_cursor CURSOR for select * from #tempA

OPEN food_cursor

--宣告變數
DECLARE @result varchar(200) --進行字串串接使用
DECLARE @food varchar(50)
DECLARE @price varchar(50)
DECLARE @cmd varchar(200) --debug時,輸出select指令
--將游標指向下一筆紀錄,擷取值設進@food以及@price
FETCH NEXT FROM tables_cursor INTO @food,@price

--開始跑迴圈
WHILE (@@FETCH_STATUS  <> -1)
BEGIN

--set @cmd = 'select food,@result='+@result+ ',price from (select food from #tempA where price=' + @price+')Duration'
set @result=''
select @result=@result+','+food from (select food from #tempA where price=@price)Duration
--PRINT 'Contact Name after: ' + @food + '_' + @price + '_' + @result+'---'+@cmd
update #tempA  set result=rtrim(@result) where price=@price
FETCH NEXT FROM food_cursor INTO @food,@price
end
CLOSE food_cursor
DEALLOCATE food_cursor

T-SQL 使用純量變數 求當月有幾天


CREATE   FUNCTION   dbo.fn_dayofmonth   (@dt   datetime)      
  RETURNS   int   AS      
  BEGIN    
  declare   @nextmonth   datetime  
  set   @nextmonth=dateadd(m,1,@dt)  
  return(day(dateadd(day,-day(@nextmonth),@nextmonth)))  
END

找出資料表中重複的資料

SELECT 欄位名稱A,COUNT(*) FROM member GROUP BY 欄位名稱A HAVING COUNT(*) > 1

取得資料庫中所有的資料表名稱 + 取得某一資料表的所有欄位名稱

引用來源
--
最近在寫程式時有用到,主要是因為對方的資料庫不給還原、附加,只他X的給你個SQL 語法介面,要麻你就執行SQL插入,要麻你就等對方幫你匯入,

不過對方說要排隊,所以乾脆自己些產生資料表資料插入語法,引此找了一些特殊的SQL語法:

1.取得資料庫表單數量
select count(*) as totaltablenumber from sysobjects where xtype = 'U';

2.取得資料表名稱(tablename)及欄位數量(columnnumber)
select name as tablename, info as columnnumber from sysobjects where xtype = 'U';

3.取得某一資料表內所有欄位名稱
select b.name from sysobjects as a, syscolumns as b where a.xtype = 'U' and a.id = b.id and a.name='資料表單名稱';

3.1 取得某一資料表內所有欄位名稱
EXEC sp_columns 表單名稱
4.另外3的話不會照欄位順序排,請加入: order by b.colorder
5.取得資料庫所有資料表名稱
select * from sysobjects where xtype = 'U'
以上為SQL 2000 OK 2005請使用下列語法
6.在SQL SERVER 2005抓取資料庫的SQL語法

select name from master.dbo.sysdatabases
7.抓取資料表的SQL語法

select Table_name from INFORMATION_SCHEMA.TABLES order by Table_name

8.抓取欄位的SQL語法
select column_name from INFORMATION_SCHEMA.COLUMNS where table_name='TableName'

2013年6月3日 星期一

ToolStripDropDownItem 用法

MSDN:ToolStripDropDownItem.DropDownItems Property
參考引用:Creating a Event handle for a DropDownItem in a MenuStrip
 --
Private Sub managerToolBar()
        Dim food As ToolStripMenuItem = New ToolStripMenuItem
        Dim addToolStripItem As ToolStripMenuItem = New ToolStripMenuItem("&add")
        AddHandler addToolStripItem.Click, AddressOf Me.addToolStripItem_Click
        food.DropDownItems.Add(addToolStripItem)
        Me.menuStrip1.Items.Add(food)
    End Sub
   
    Private Sub addToolStripItem_Click(ByVal sender As Object, ByVal e As EventArgs)
        MessageBox.Show("add")
    End Sub