中自定義函式和游標應用的經典案例

2021-04-17 03:16:59 字數 942 閱讀 7410

這是網友的問題,我當時立馬給出了自己的解決方案,但是沒有想到中間有點小問題,發現後經過自己仔細除錯,完全得到正確結果後,那個網友已經結帖了。我的**遂成為雞肋,食之無味,棄之可惜。但是我覺得我的**確實還是挺經典的,所以整理了一下,供各位網友欣賞。

問題:假設環境如下:

表1:     id,name,     ,    phone,

表中資料:     1      秦雲       1010280013500000

2      在路上     10378   13600000

3      leo        10000   13900000

表2:     id,name, 上機時間,管理員,

表中資料:    1  秦雲   2004-1-1 李大偉

2  秦雲   2005-1-1 馬化騰

3   在路上 2005-1-1 馬化騰

4   秦雲  2005-1-1 李大偉

5  在路上2005-1-1 李大偉

實現目的:從表1中取所有人員列表,從表2中取上機次數和管理員.

上機人員名單   上機次數  管理員(上這幾次機的每個管理員都列出來)

秦雲            3            李大偉,馬化騰,李大偉

在路上          2           馬化騰,李大偉

leo             0      

如果不算管理員那一列的話,我是這樣寫的。

select 表1.nameas姓名,count(表2.id)as上機次數

from 表1leftouterjoin

表2on表1.name=表2.name

groupby表1.名稱

解答:測試用例

createtable表1(--droptable表1

id    int,

name  varchar(10),

經典SQL自定義函式

1 確定某年某月有多少天 實現原理 先利用datediff取得當前月的第一天,再將月份加一取得下月第一天,然後減去1分鐘,再取日期的 天數部分,即為當月最大日期,也即當月天數 create function daysinmonth date datetime returns int asbegin ...

經典SQL自定義函式

1 確定某年某月有多少天 實現原理 先利用datediff取得當前月的第一天,再將月份加一取得下月第一天,然後減去1分鐘,再取日期的 天數部分,即為當月最大日期,也即當月天數 create function daysinmonth date datetime returns int asbegin ...

經典SQL自定義函式

1 確定某年某月有多少天 實現原理 先利用datediff取得當前月的第一天,再將月份加一取得下月第一天,然後減去1分鐘,再取日期的 天數部分,即為當月最大日期,也即當月天數 create function daysinmonth date datetime returns int asbegin ...