IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類(lèi)|軟件專(zhuān)題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁(yè)數(shù)據(jù)庫(kù)MSSQL → 解決SQL Server中Group無(wú)法實(shí)現(xiàn)的問(wèn)題

解決SQL Server中Group無(wú)法實(shí)現(xiàn)的問(wèn)題

時(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:

  1. SELECT?SUM(ISNULL(BidsTrade_Money,?0))? ?
  2. AS?[MONEY],?a.number? ?
  3. AS?[DAY]FROM?MASTER..spt_values?a???? ?
  4. LEFT?JOIN?DDPM_T_Comm_BidsTrade?b?? ?
  5. ON??a.type?=?'p'????? ?
  6. ?AND?month([BidsTrade_DateCreated])='5' ?
  7. AND?a.number?=?DAY(b.[BidsTrade_DateCreated]) ?
  8. AND?YEAR([BidsTrade_DateCreated])?=?'2010' ?
  9. 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)- -..)

  1. CREATE?function?[dbo].[CN80s_FN_GetOrderType](????@tabName?nvarchar(2000),???? ?
  2. @keyOrder?nvarchar(255))returns?nvarchar(100)asbegin????declare?@OrderTable?nvarchar(255)??--表名??? ?
  3. ?declare?@OrderName?nvarchar(255)??--字段名???? ?
  4. declare?@OrderType?nvarchar(255)??--字段類(lèi)型???? ?
  5. declare?@OrderPrec?nvarchar(50)??--字段長(zhǎng)度???? ?
  6. declare?@OrderDot?int??--點(diǎn)的位置???? ?
  7. declare?@s1?nvarchar(100)?--?臨時(shí)變量1???? ?
  8. declare?@s2?nvarchar(100)?--?臨時(shí)變量2????--去除排序規(guī)則????
  9. set?@keyorder=REPLACE(@keyorder,?'?asc',?'')????--求表名、字段名???? ?
  10. set?@OrderDot=CHARINDEX('.',?@keyorder)???? ?
  11. IF?@OrderDot?>?0?? ?
  12. BEGIN ?
  13. SET?@OrderTable?=?SUBSTRING(@keyorder,?0,?@OrderDot) ?
  14. SET?@OrderName?=?SUBSTRING(@keyorder,?@OrderDot?+?1,?LEN(@keyorder))? ?
  15. END???? ?
  16. ELSE?? ?
  17. BEGIN ?
  18. SET?@OrderTable?=?@tabName ?
  19. SET?@OrderName?=?@keyorder?? ?
  20. END????--去除方括號(hào)????set?@s1=REPLACE(REPLACE?(@OrderTable,'[',''),']','')???? ?
  21. set?@s2=REPLACE(REPLACE?(@OrderName,'[',''),']','')????--求字段類(lèi)型、字段長(zhǎng)度???? ?
  22. SELECT?@OrderType=t.[name],?@OrderPrec=c.prec???? ?
  23. FROM?sysobjects?o????? ?
  24. JOIN?syscolumns?c?on?o.id=c.id???? ?
  25. JOIN?systypes?t?on?c.xusertype=t.xusertype???? ?
  26. W

    關(guān)鍵詞標(biāo)簽:SQL Server

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門(mén)文章 淺談JSP JDBC來(lái)連接SQL Server 2005的方法 淺談JSP JDBC來(lái)連接SQL Server 2005的方法 SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 sql server系統(tǒng)表?yè)p壞的解決方法 sql server系統(tǒng)表?yè)p壞的解決方法 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶(hù)、角色、架構(gòu)的關(guān)系 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶(hù)、角色、架構(gòu)的關(guān)系

相關(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的方法