因?yàn)槟惆凑杖掌诜纸M了!~ 如果你想去最大的日期像下面這樣寫就可以了!~

專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)碌曲免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了超過(guò)千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
select max (OrderDate) as OrderDate
from dbo.Orders
你要取的是每個(gè)月最大值不是嗎?所以你的SQL應(yīng)該是沒(méi)有問(wèn)題的!~
20121112
20121013
20120914
像上面這組值 就是你這個(gè)SQL取出來(lái)的,每個(gè)月只有一條值!~
isnull在數(shù)據(jù)庫(kù)查詢中的應(yīng)用,特別是再語(yǔ)句連接的時(shí)候需要用到
比如連接時(shí)候,某個(gè)字段沒(méi)有值但是又要左連接到其他表上
就會(huì)顯示空,
isnull可以判斷是否是NULL,如果是給個(gè)默認(rèn)值
isnull("字段名","默認(rèn)的數(shù)據(jù)")
SqlServer中的null值與IsNull函數(shù)
NULL
值的三大特點(diǎn),分別是:1)NULL值不參加統(tǒng)計(jì);2)NULL值不進(jìn)入計(jì)算表達(dá)式;3)不能與其它值進(jìn)行比較。
所謂NULL值不參加統(tǒng)計(jì)
即
在使用統(tǒng)計(jì)函數(shù)時(shí),凡是涉及到
NULL值的都會(huì)被忽視掉(用詞可能不準(zhǔn)確),不要以為這不重要,其實(shí)在某些地方這是很重要的。而
NULL值不進(jìn)入計(jì)算也就是說(shuō)在進(jìn)行數(shù)據(jù)之間的統(tǒng)計(jì)計(jì)算時(shí),若有為
NULL值的項(xiàng),那么它是不進(jìn)入即不參加計(jì)算的。這也是一個(gè)不容忽視的問(wèn)題。這即使在生活中也是常見(jiàn)的。就好比如說(shuō)一個(gè)人的獎(jiǎng)金為NULL值(沒(méi)有錄入數(shù)據(jù)或其它的原因,不做探討),而他的基本工資總不會(huì)為
吧?!(如果為0,早就被T了),月末算總工資的時(shí)候把基本工資加上獎(jiǎng)金,而若是獎(jiǎng)金為
NULL值,總工資
=
基本工資
+
獎(jiǎng)金(NULL),那么當(dāng)此種情況發(fā)生時(shí),總工資
=
基本工資
?
肯定的回答是:不等于。因?yàn)楠?jiǎng)金為
NULL值,NULL值代表具體的什么值?都不知道。而不知道NULL值到底是多少,那么又怎么能進(jìn)行計(jì)算呢?所以總工資等于
NULL
的,也是不確定的。這樣,還有員工敢在公司嗎?萬(wàn)一你來(lái)個(gè)總工資的
NULL
為真的空了,那還做什么工作啊?!這就涉及到一個(gè)強(qiáng)制轉(zhuǎn)換的問(wèn)題,即把
NULL值強(qiáng)制轉(zhuǎn)換為
,讓其具備業(yè)務(wù)意義。而強(qiáng)制轉(zhuǎn)換的關(guān)鍵字就是
IS
,語(yǔ)法即
IS
NULL;這樣就可以進(jìn)行涉及
NULL值的計(jì)算了。
不過(guò)
NULL值也不是對(duì)所有的統(tǒng)計(jì)函數(shù)都有影響。一般來(lái)說(shuō)。統(tǒng)計(jì)平均值(AVG)時(shí),
NULL值是一定會(huì)有影響的;統(tǒng)計(jì)最小值(MIN)時(shí),
NULL值是可能會(huì)對(duì)
MIN
有影響,在我認(rèn)為是有點(diǎn)隨機(jī)性質(zhì);統(tǒng)計(jì)最大值(MAX)或統(tǒng)計(jì)和(NULL)時(shí),NULL值是對(duì)其完全沒(méi)有影響的。
所以又有一種說(shuō)法是:null值不參加統(tǒng)計(jì),不參加計(jì)算,只能用is判斷。
判斷Null值語(yǔ)句:select
*
from
表
where
字段
is
null;
轉(zhuǎn)換null值語(yǔ)句:select
字段1,字段2,字段3,is
null(字段3,'某個(gè)值')
from
表;
總之,我們要認(rèn)真對(duì)待
NULL值,最好在使用統(tǒng)計(jì)函數(shù)時(shí),都加上
IS
NULL,以防意外出現(xiàn)。
sqlserver
中isnull的用法一例
數(shù)據(jù)庫(kù)中有一列記錄文章的訪問(wèn)次數(shù)。我現(xiàn)在要實(shí)現(xiàn)的功能是,每刷新一次頁(yè)面。
訪問(wèn)次數(shù)+1。sql語(yǔ)句,art_count為訪問(wèn)次數(shù),int類型。
update
article
set
art_count="(art_count+1)
where
art_id="3
但如果art_count為NULL,則不起作用。
如果是oracle用decode可以很容易的實(shí)現(xiàn)此功能。sqlserver中如何實(shí)現(xiàn)類似的功能呢?
sqlserver中有一個(gè)函數(shù)isnull,此函數(shù)有兩個(gè)參數(shù)isnull(p1,p2)其用法是如果p1為null,則用p2代替。
此函數(shù)類似oracle的nvl。例如
SELECT
AVG(ISNULL(price,
$10.00))
FROM
titles
受到此函數(shù)的啟發(fā)我這樣寫的sql語(yǔ)句
update
article
set
art_count="(isnull(vote_count,0)+1)
where
art_id="3
"
要找出月初到月末的數(shù)據(jù),那只要找出本月范圍即可,SQL提供了DateDiff來(lái)解決這個(gè)問(wèn)題:
DateDiff 函數(shù):返回兩個(gè)日期之間的時(shí)間間隔。
語(yǔ)法
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
示例如下:
select * from table where datediff(month,getdate(), date_colName)=0
如果當(dāng)前日期getdate() 和表中的字段date_colName 相等,即為本月。
--?輸入201401
--?月初時(shí)間
select?dateadd(day,?datediff(day,?0,convert(datetime,'201401'+'01',112)),?0)
--?月末時(shí)間
select?dateadd(ss,-1,dateadd(month,?datediff(month,?-1,convert(datetime,'201401'+'01',112)),?0))
--?輸入2014?
--?年初時(shí)間
select?dateadd(year,?datediff(year,?0,convert(datetime,'2014'+'0101',112)),?0)
--?年末時(shí)間
select?dateadd(ss,-1,dateadd(year,?datediff(year,?0,convert(datetime,'2014'+'0101',112)),?0))
網(wǎng)站題目:月末sqlserver,月末結(jié)賬畫紅線示范圖
網(wǎng)站路徑:http://chinadenli.net/article42/dsehshc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、電子商務(wù)、App開(kāi)發(fā)、App設(shè)計(jì)、做網(wǎng)站、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)