簡體   English   中英

水晶報表 c#

[英]Crystal report c#

我想做的是在水晶報表中插入數據,挑戰在於如何實現。

我的數據是

Jan 1, Number, Name
Jan 2, Number, Name
Jan 4, Number, Name
Jan 5, Number, Name
Jan 7, Number, Name

我想做的是不管我的數據如何,我都想在我的水晶報表中顯示整個月。

所以預期的 output 是

Jan 1, Number, Name
Jan 2, Number, Name
Jan 2, Null, Null
Jan 4, Number, Name
Jan 5, Number, Name
Jan 2, Null, Null
Jan 7, Number, Name
Jan 8, Null , Null
...
Jan 31, Null , Null 

,是否可以在水晶報表上做到這一點?

我可以使用 select * 從我的查詢中生成它,但我不知道如何填寫缺失值。

我認為你需要為你需要的日期創建一個日期表,然后你可以加入你的數據。

前任。 select * from [DateTable] left outer join [your queries] on [DateTable].date=[your queries].date

下面是一個示例,說明如何為從當年開始的 10 年期間創建一次日期表:

DECLARE @StartDate  date = '20210101';

DECLARE @CutoffDate date = DATEADD(DAY, -1, DATEADD(YEAR, 10, @StartDate));

;WITH seq(n) AS 
(
  SELECT 0 UNION ALL SELECT n + 1 FROM seq
  WHERE n < DATEDIFF(DAY, @StartDate, @CutoffDate)
),
d(d) AS 
(
  SELECT DATEADD(DAY, n, @StartDate) FROM seq
),
src AS
(
  SELECT
    TheDate         = CONVERT(date, d),
    TheDay          = DATEPART(DAY,       d),
    TheDayName      = DATENAME(WEEKDAY,   d),
    TheWeek         = DATEPART(WEEK,      d),
    TheISOWeek      = DATEPART(ISO_WEEK,  d),
    TheDayOfWeek    = DATEPART(WEEKDAY,   d),
    TheMonth        = DATEPART(MONTH,     d),
    TheMonthName    = DATENAME(MONTH,     d),
    TheQuarter      = DATEPART(Quarter,   d),
    TheYear         = DATEPART(YEAR,      d),
    TheFirstOfMonth = DATEFROMPARTS(YEAR(d), MONTH(d), 1),
    TheLastOfYear   = DATEFROMPARTS(YEAR(d), 12, 31),
    TheDayOfYear    = DATEPART(DAYOFYEAR, d)
  FROM d
)
SELECT * into dbo.DateTable
 FROM src
  ORDER BY TheDate
  OPTION (MAXRECURSION 0);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM