SQL自動補充其他月份為0

2022-09-15 19:33:11 字數 2362 閱讀 5933

create

table productsale(id int

identity(1,1) primary

key,productname nchar(10), sales int,dates datetime)

insert

into

productsale

select'a

',100,'

2014-01-05

'union

allselect'a

',200,'

2014-02-05

'union

allselect'a

',300,'

2014-03-05

'union

allselect'b

',100,'

2014-01-05

'union

allselect'b

',300,'

2014-03-05

'union

allselect'b

',400,'

2014-04-05

'

select row_number() over (order

by b.年) as id , b.productname,isnull(c.sales,0) sales,b.dates from (select

rtrim(a.年)+'-

'+rtrim(t.number)+'-

'+rtrim('

01') as dates,a.productname,a.年,t.number 月 from (select

distinct

year(dates) as 年,productname from productsale) a,master..spt_values t where t.type='p

'and t.number

>=

1and t.number

<=

12) b left

join productsale as c on b.年=

year(c.dates) and b.月=

month(c.dates) and b.productname=c.productname

執行sql語句之前:

執行sql語句之後:

知識點1、獲取日期的年份、月份(getdate() = '2006-11-08 13:37:56.233')

month ( date )返回表示指定日期的「月」部分的整數。select month(getdate()) --返回11

year ( date )返回表示指定日期的「年」部分的整數。select year(getdate()) --返回2006

2、master..spt_value表的含義

相當於乙個數字輔助表(master.dbo.spt_value),master是資料名,spt_value是表名,在sql中主要用到number欄位。

3、sql建立表,自動增長欄位identity

語法:identity(seed,increment) 

引數:seed 載入到表中的第乙個行所使用的值;

increment 與前乙個載入的行的標識值想家的增量值。

create table productsale(id int identity(1,1) primary key)

4、連線字段

如果欄位都是char型,直接用「+」連線;如果地段都是int型,用case函式轉換下,即case(欄位名 as varchar(4) ),rtrim()函式,將字串尾部的空格去掉。

5、sql語句實現斷號問題(row_number函式)

row_number() over (order by b.年 ) as  id

Oracle自動補全日期,空資料為0

1.問題描述 在資料庫查詢中計算年月週日的資料時候,會發現日期並不完整,希望日期可以自動補全,並且沒有資料的字段補0 最開始的資料展現為如下圖 select nvl sum synnum 0 value to char syntime,yyyy mm dd lable from synlog whe...

mybatis編寫sql條件值為0時無效

今天做專案發現當傳回sql條件為0時,後台判斷無效 prop state v model filters.state placeholder 客戶狀態 value v for item in states key item.id label item.name value item.id el op...

解決表示式解析為sql 語句時遇到除0錯誤的程式

public class exprssionhandlerimpl implements expressionhandler else result.deletecharat result.length 1 不能用case result when null then null else derive...