【发布时间】:2017-02-24 03:29:44
【问题描述】:
我需要在两个“AL”或两个“MX”之间用“-”填充/替换行,其值为“AL”或“MX”,具体取决于“-”出现的位置。出于本示例的目的,我只使用了 2 个“uid”(实际上我有更多的 uid)。此外,该表在 ASC 中按 uid 和 code_date 列排序
为了便于理解,我有这张表:
但我想要这样的东西:
我正在使用 SQL Server 2008。关于如何实现这一点的任何建议?
我使用以下代码创建了表格:
DECLARE @Customers TABLE
(uid bigint,
code_date date,
Value nchar(10)
)
INSERT INTO @Customers
VALUES (1591, '2016-08-01', ''),
(1591, '2016-08-02', ''),
(1591, '2016-08-03', 'AL'),
(1591, '2016-08-04', '-'),
(1591, '2016-08-05', '-'),
(1591, '2016-08-06', '-'),
(1591, '2016-08-07', '-'),
(1591, '2016-08-08', '-'),
(1591, '2016-08-09', 'AL'),
(1591, '2016-08-10', ''),
(1591, '2016-08-11', 'AL'),
(1591, '2016-08-12', ''),
(1082, '2016-02-01', ''),
(1082, '2016-02-02', ''),
(1082, '2016-02-03', ''),
(1082, '2016-02-04', ''),
(1082, '2016-02-05', 'MX'),
(1082, '2016-02-06', '-'),
(1082, '2016-02-07', '-'),
(1082, '2016-02-08', '-'),
(1082, '2016-02-09', '-'),
(1082, '2016-02-10', '-'),
(1082, '2016-02-11', '-'),
(1082, '2016-02-12', 'MX');
SELECT * FROM @Customers ORDER BY uid, code_date ASC
【问题讨论】:
标签: sql sql-server tsql sql-server-2008-r2 common-table-expression