久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

每個日期范圍的動態月年列

Dynamic month year columns per date range(每個日期范圍的動態月年列)
本文介紹了每個日期范圍的動態月年列的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我需要一個帶有@startDate 和@endDate 參數的存儲過程的select 語句.它需要根據日期范圍參數返回以月年(2011 年 8 月")格式標記的動態數量的列.

I need a select statement for a stored procedure with @startDate and @endDate parameters. It needs to return a dynamic amount of columns that are labeled in a month year ("August 2011") format based on the date range parameters.

例如,如果@startDate = 1/1/2011 和@endDate = 3/1/2011

For example, if @startDate = 1/1/2011 and @endDate = 3/1/2011

結果集看起來像:

column headers ---->  January 2011 | February 2011 | March 2011
rows with data ---->       123     |      3456     |    793

獲取與列標題對應的日期時間的函數將用于數據行

a function taking the datetime corresponding to the column header will be used for rows of data

這可能嗎?使用樞軸?預先感謝您的所有回復!

Is this possible? Use pivot? Thanks in advance for all of your responses!

推薦答案

假設你不需要接觸任何表格(所有數據都來自函數).請注意,SQL Server 2000 中本地 NVARCHAR 變量的限制是 4,000 個字符,因此您需要注意范圍的長度.

Assuming you don't need to touch any tables (all data comes from the function). Note that the limit on a local NVARCHAR variable in SQL Server 2000 is 4,000 characters, so you'll need to be careful about how long your range can be.

DECLARE 
    @startDate SMALLDATETIME, 
    @endDate   SMALLDATETIME;

SELECT 
    @startDate = '20110101', 
    @endDate   = '20110301';


DECLARE 
    @i       INT,
    @sd      SMALLDATETIME,
    @sql     NVARCHAR(MAX),
    @column  VARCHAR(32),
    @columns NVARCHAR(4000);

SELECT @i = 0, @columns = N'';

WHILE @i <= DATEDIFF(MONTH, @startDate, @endDate)
BEGIN
    SET @sd = DATEDIFF(DAY, 0, DATEADD(MONTH, @i, @startDate));

    SET @column = DATENAME(MONTH, @sd) 
        + ' ' + CONVERT(VARCHAR(20), YEAR(@sd));

    SET @columns = @columns + ',' + CHAR(13) + CHAR(10) 
        + ' [' + @column + ']' + ' = dbo.FunctionName(''' + @column + ''')';

    SET @i = @i + 1;
END

SET @sql = 'SELECT ' + STUFF(@columns, 1, 1, '') + ';';

PRINT @sql;
--EXEC sp_executesql @sql;

在這種情況下,這會產生:

In this case this yields:

SELECT 
 [January 2011] = dbo.FunctionName('January 2011'),
 [February 2011] = dbo.FunctionName('February 2011'),
 [March 2011] = dbo.FunctionName('March 2011');

這篇關于每個日期范圍的動態月年列的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Converting Every Child Tags in to a Single Column with multiple Delimiters -SQL Server (3)(將每個子標記轉換為具有多個分隔符的單列-SQL Server (3))
How can I create a view from more than one table?(如何從多個表創建視圖?)
Create calculated value based on calculated value inside previous row(根據前一行內的計算值創建計算值)
How do I stack the first two columns of a table into a single column, but also pair third column with the first column only?(如何將表格的前兩列堆疊成一列,但也僅將第三列與第一列配對?) - IT屋-程序員軟件開發技
Recursive t-sql query(遞歸 t-sql 查詢)
Convert Month Name to Date / Month Number (Combinations of Questions amp; Answers)(將月份名稱轉換為日期/月份編號(問題和答案的組合))
主站蜘蛛池模板: 久久香蕉精品视频 | 男女羞羞在线观看 | 久久精品男人的天堂 | 亚洲欧美激情精品一区二区 | 福利av在线| 97操操| 国产精品一区在线观看 | 中文字幕精品视频 | 亚洲欧美日韩精品久久亚洲区 | 希岛爱理在线 | 性福视频在线观看 | 欧美一级做性受免费大片免费 | 黄色大片免费网站 | 91观看 | 亚洲精选久久 | 亚洲一级在线 | 国产日韩免费视频 | 午夜日韩精品 | 亚洲精品一区二区三区 | 午夜影院在线观看免费 | 性高湖久久久久久久久aaaaa | 97人人爱 | 欧美久操网 | 欧美一级在线观看 | 久久久久99 | 日韩毛片在线观看 | 精品国产精品三级精品av网址 | 午夜激情免费视频 | 精品一级| 自拍偷拍中文字幕 | 日韩有码一区 | 日韩欧美中文字幕在线观看 | 91精品久久久 | 午夜久久久久久久久久一区二区 | 亚洲视频1区 | 一区二区三区视频播放 | 自拍偷拍中文字幕 | 波多野结衣电影一区 | 精品欧美一区二区精品久久久 | 欧美日韩高清在线一区 | 99久久精品国产毛片 |