時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
在前一段時(shí)間中遇到一個(gè)需求..統(tǒng)計(jì)某一種商品在某一天中的銷(xiāo)售數(shù)量,當(dāng)天沒(méi)有銷(xiāo)售的時(shí)候,數(shù)量顯示0.
這個(gè)不能用一般的Group來(lái)實(shí)現(xiàn).所以需要變通一下,跟一個(gè)有1-31的一個(gè)集合來(lái)Group.
有2種方案.
planA:
- SELECT?SUM(ISNULL(BidsTrade_Money,?0))? ?
- AS?[MONEY],?a.number? ?
- AS?[DAY]FROM?MASTER..spt_values?a???? ?
- LEFT?JOIN?DDPM_T_Comm_BidsTrade?b?? ?
- ON??a.type?=?'p'????? ?
- ?AND?month([BidsTrade_DateCreated])='5' ?
- AND?a.number?=?DAY(b.[BidsTrade_DateCreated]) ?
- AND?YEAR([BidsTrade_DateCreated])?=?'2010' ?
- WHERE?a.number?BETWEEN?1?AND?31GROUP?BY?a.numberorder?by?DAY?
使用MASTER..spt_values(產(chǎn)生一定范圍的數(shù)字的數(shù)字,這里需要產(chǎn)生1-31的數(shù)字.)
但是這一種方法有缺陷,每一個(gè)月不一定都是31天.并且我們配置的SQL賬號(hào)不一定有權(quán)限來(lái)訪(fǎng)問(wèn)這個(gè)函數(shù).
planB:.通過(guò)自定義函數(shù).
自定義函數(shù)GetOrderType(比較長(zhǎng)- -..)
- CREATE?function?[dbo].[CN80s_FN_GetOrderType](????@tabName?nvarchar(2000),???? ?
- @keyOrder?nvarchar(255))returns?nvarchar(100)asbegin????declare?@OrderTable?nvarchar(255)??--表名??? ?
- ?declare?@OrderName?nvarchar(255)??--字段名???? ?
- declare?@OrderType?nvarchar(255)??--字段類(lèi)型???? ?
- declare?@OrderPrec?nvarchar(50)??--字段長(zhǎng)度???? ?
- declare?@OrderDot?int??--點(diǎn)的位置???? ?
- declare?@s1?nvarchar(100)?--?臨時(shí)變量1???? ?
- declare?@s2?nvarchar(100)?--?臨時(shí)變量2????--去除排序規(guī)則????
- set?@keyorder=REPLACE(@keyorder,?'?asc',?'')????--求表名、字段名???? ?
- set?@OrderDot=CHARINDEX('.',?@keyorder)???? ?
- IF?@OrderDot?>?0?? ?
- BEGIN ?
- SET?@OrderTable?=?SUBSTRING(@keyorder,?0,?@OrderDot) ?
- SET?@OrderName?=?SUBSTRING(@keyorder,?@OrderDot?+?1,?LEN(@keyorder))? ?
- END???? ?
- ELSE?? ?
- BEGIN ?
- SET?@OrderTable?=?@tabName ?
- SET?@OrderName?=?@keyorder?? ?
- END????--去除方括號(hào)????set?@s1=REPLACE(REPLACE?(@OrderTable,'[',''),']','')???? ?
- set?@s2=REPLACE(REPLACE?(@OrderName,'[',''),']','')????--求字段類(lèi)型、字段長(zhǎng)度???? ?
- SELECT?@OrderType=t.[name],?@OrderPrec=c.prec???? ?
- FROM?sysobjects?o????? ?
- JOIN?syscolumns?c?on?o.id=c.id???? ?
- JOIN?systypes?t?on?c.xusertype=t.xusertype???? ?
- W
關(guān)鍵詞標(biāo)簽:SQL Server
相關(guān)閱讀
熱門(mén)文章 淺談JSP JDBC來(lái)連接SQL Server 2005的方法 SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 sql server系統(tǒng)表?yè)p壞的解決方法 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶(hù)、角色、架構(gòu)的關(guān)系
人氣排行 配置和注冊(cè)O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫(kù) SQL2000數(shù)據(jù)庫(kù)遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù) SQL2000和SQL2005數(shù)據(jù)庫(kù)服務(wù)端口查看或修改 修改Sql Server唯一約束教程 SQL Server 2005降級(jí)到2000的正確操作步驟 sql server系統(tǒng)表?yè)p壞的解決方法 淺談JSP JDBC來(lái)連接SQL Server 2005的方法