SQL語句如何使用日期作為列

2021-06-06 05:57:06 字數 2177 閱讀 5624

第一回寫原創文章大家多多包含啊!今天乙個朋友找我寫個東西,就是在sql2000資料庫下使用乙個表中的日期資料作為列呈現乙個列印報表。需求如下:

2012-05-01

2012-05-02

2012-05-03

2012-05-04

分公司1

1000

1000

1000

1000

分公司2

1000

1000

1000

1000

簡單說就是按天求和當天的班組日產值。不要問我日產值是什麼。我也不知道。我原來的做法是在應用層多次查詢資料庫並將獲得的結果集整合出一張報表。但是那位老哥不知道用了c++的什麼元件dao返回的結果集不能通過程式修改,只能直接在頁面呈現。這可要了我的老命。經詳細研究寫出了如下語句。最終可實現需求。那個資料神馬的我就不提供插入語句了大家心領神會就好。

其實簡單的思路就是把一條條的sql片段拼裝成一條sql語句。哦對了,如果使用如下方式的話建議發在儲存過程中,我比較懶就沒寫。大家多多包含。最後需要說的是建立表的時候用中文真心不好,還是用英文吧。或許有的人會問,為什麼例子是中文的呢?回答是表結構是他給的我怕換了他看不懂……殘念啊!具體每條語句的意義詳見注釋。如果是其他資料庫也可以仿照這個例子寫。因為原理是不變的。唯一有問題的是如果時間太多會造成sql片段過長的問題。需要注意!ok其他的看**吧,不解釋了!

if exists (select * from dbo.sysobjects where id = object_id(n'[dbo].[rcllr]') and objectproperty(id, n'isusertable') = 1)

drop table [dbo].[rcllr]

go

create table [dbo].[rcllr] (

[訂單編號] [nvarchar] (50) collate chinese_prc_ci_as not null ,

[分公司] [nvarchar] (50) collate chinese_prc_ci_as null ,

[投產班組] [nvarchar] (50) collate chinese_prc_ci_as null ,

[班組人數] [int] null ,

[出工人數] [int] null ,

[班組日產量] [int] null ,

[產量日期] [datetime] null ,

[班組日產值] [numeric](18, 2) null ,

[班組完成任務數] [int] null ,

[班組剩餘任務數] [int] null

) on [primary]

go

declare @starttime datetime,@endtime datetime,@sql varchar(2000)

set @starttime = '2012-05-01';--起始時間

set @endtime = '2012-05-06';--結束時間

set @sql = 'select 分公司';--需要查詢什麼欄位在這裡拼裝

while @starttime < @endtime

begin

print @starttime

set @starttime = @starttime+1

--'''表示輸出乙個單引號

--'''+convert(varchar(10),@starttime,120)+'''表示 將變數@starttime轉換為字串 '2012-05-05'

set @sql = @sql +',(select sum(班組日產值) from rcllr m where m.分公司=n.分公司 and m.產量日期='''+convert(varchar(10),@starttime,120)+''') as '''+convert(varchar(10),@starttime,120)+''''

endset @sql = @sql+' from rcllr n group by 分公司'--其他查詢條件在這裡拼裝

exec(@sql) --執行sql

print @sql --列印sql

使用sql語句,根據年月日得到日期列

年 月 日,前提是tab這張表中有observedate 日期 nian 年 yue 月 ri 日 列 update tab set observedate convert datetime,convert char 5 nian convert char 5 yue convert char 5 ...

日期條件SQL 擷取日期作為條件

最近研究日期條件,稍微總結一下,以後繼續補充 select from dbo.mzsjb02 whereconvert char 10 段字名,23 2011 08 31 比如,日期的段字名是 進貨日期 並且其日期的式格是2011 08 31 09 22 00,只想擷取年月日作為條件,則select...

SQL語句求日期

sql語句求日期 select add months sysdate,1 lastday from dual 上個月的今天 select to char add months last day sysdate 1 yyyy mm dd lastday from dual 上個月的最後一天 selec...