一位朋友告诉我,他的新雇主需要一份 SSRS 报告来解析包含 n 次连续出现的列 1) 文字“日期:” 2) 可选分隔符 3) 后跟 DD-MM-YY 格式的日期 (前导零是可选的) 4) 分隔空间 5) 与日期相关联的单个“WORD”数据。这个词将没有嵌入的空格。
我将使用满足此标准的数据填充一个示例表,以便为您提供一个示例以使其清楚:
CREATE TABLE [dbo].[Sample](
[RowNumber] [int] NOT NULL,
[DataMess] [varchar](max) NOT NULL
) ON [PRIMARY]
INSERT [dbo].[Sample] ([RowNumber], [DataMess]) VALUES (1, N'Date:12-21-13 12/13/14/15 Date:4-2-11 39/12/134/14 Date:4-1-13 19/45/5/12')
INSERT [dbo].[Sample] ([RowNumber], [DataMess]) VALUES (2, N'Date:7-21-13 12/13/14/15 Date:8-21-12 39/12/34/14 Date:12-1-13 19/4/65/12')
INSERT [dbo].[Sample] ([RowNumber], [DataMess]) VALUES (3, N'Date:3-21-13 12/11233/14/15 Date:4-28-13 39/12/34/14 Date:9-19-13 19/45/65/12')
对于第一条记录,“12/13/14/15”被认为是与日期 12-21-13 关联的数据的“字”。
他被要求在 SSRS 中制作以下报告:
Row Number DataMess
1 Date: 12-21-13 12/13/14/15
Date: 4-1-13 19/45/5/12
Date: 4-2-11 39/12/134/14
2 Date:12-1-13 19/4/65/12
Date:7-21-13 12/13/14/15
Date:8-21-12 39/12/34/14
3 Date:9-19-13 19/45/65/12
Date:4-28-13 39/12/34/14
Date:3-21-13 12/11233/14/15
请注意,每个源行号的日期按相关数据的降序排列。
我不知道 SSRS,但我的反应是向他建议他甚至不要尝试这项任务,而是告诉他的雇主,数据不应该真的试图用 T-SQL 进行所有那些丑陋的字符串解析。相反,这个重复的“日期:数据”应该存储在与父行记录相关联的各个子记录中。我相信代码会丑陋、低效、脆弱且难以维护。你怎么认为?
假设 management\client 总是正确的,或者承认“理想情况下”这是正确的,但是“现在”我们需要一个生成以下报告的 SQL,如何做到这一点?期望可以快速生成(例如半天)