createtable productsale(id int
identity(1,1) primary
key,productname nchar(10), sales int,dates datetime)
insertinto
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執行sql語句之前: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語句之後:
知識點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...