Mysql Sql查询使用Sql查询将第二行数据显示为第一行,将第三行数据显示为第二行,依此类推
我的sql server中有一个表。该表有一列 示例表名称:Sample 列名:数据 资料Mysql Sql查询使用Sql查询将第二行数据显示为第一行,将第三行数据显示为第二行,依此类推,mysql,sql-server,Mysql,Sql Server,我的sql server中有一个表。该表有一列 示例表名称:Sample 列名:数据 资料 ----------- 7/11/2014 12:00:00 AM 7/31/2014 12:00:00 AM 8/21/2014 12:00:00 AM 9/19/2014 12:00:00 AM 11/20/2014 12:00:00 AM 12/18/2014 12:00:00 AM 1/22/2015 12:00:00 AM 因此,通过这个数据,我想添加一个额外的列,在该列中,我想将
-----------
7/11/2014 12:00:00 AM
7/31/2014 12:00:00 AM
8/21/2014 12:00:00 AM
9/19/2014 12:00:00 AM
11/20/2014 12:00:00 AM
12/18/2014 12:00:00 AM
1/22/2015 12:00:00 AM
因此,通过这个数据,我想添加一个额外的列,在该列中,我想将第二行数据放入第一行,第三行数据放入第二行…以此类推
例如:
data New Column
----------- ----------------------
7/11/2014 12:00:00 AM 7/31/2014 12:00:00 AM
7/31/2014 12:00:00 AM 8/21/2014 12:00:00 AM
8/21/2014 12:00:00 AM 9/19/2014 12:00:00 AM
9/19/2014 12:00:00 AM 11/20/2014 12:00:00 AM
11/20/2014 12:00:00 AM 12/18/2014 12:00:00 AM
12/18/2014 12:00:00 AM 1/22/2015 12:00:00 AM
1/22/2015 12:00:00 AM Null
为我提供如何获得预期输出的建议。测试数据
DECLARE @Table TABLE (DateColumn DATETIME)
INSERT INTO @Table VALUES
('7/11/2014 12:00:00 AM'),
('7/31/2014 12:00:00 AM'),
('8/21/2014 12:00:00 AM'),
('9/19/2014 12:00:00 AM'),
('11/20/2014 12:00:00 AM'),
('12/18/2014 12:00:00 AM'),
('1/22/2015 12:00:00 AM')
查询
;WITH CTE AS
(
SELECT DateColumn
,ROW_NUMBER() OVER (ORDER BY DateColumn) rn
FROM @Table
)
SELECT A.DateColumn AS DateColumn1
,B.DateColumn AS DateColumn2
FROM CTE A
LEFT JOIN CTE B ON A.rn = B.rn - 1
结果
╔═════════════════════════╦═════════════════════════╗
║ DateColumn1 ║ DateColumn2 ║
╠═════════════════════════╬═════════════════════════╣
║ 2014-07-11 00:00:00.000 ║ 2014-07-31 00:00:00.000 ║
║ 2014-07-31 00:00:00.000 ║ 2014-08-21 00:00:00.000 ║
║ 2014-08-21 00:00:00.000 ║ 2014-09-19 00:00:00.000 ║
║ 2014-09-19 00:00:00.000 ║ 2014-11-20 00:00:00.000 ║
║ 2014-11-20 00:00:00.000 ║ 2014-12-18 00:00:00.000 ║
║ 2014-12-18 00:00:00.000 ║ 2015-01-22 00:00:00.000 ║
║ 2015-01-22 00:00:00.000 ║ NULL ║
╚═════════════════════════╩═════════════════════════╝
表中是否有任何主键?在检索数据后,是否有理由不使用php或python之类的脚本语言执行此操作?您是否可以在下面的问题中建议我,我在第1行获得输出,但为空值谢谢您的回答
DECLARE @Table TABLE (DateColumn DATETIME)
INSERT INTO @Table VALUES
('7/11/2014 12:00:00 AM'),
('7/31/2014 12:00:00 AM'),
('8/21/2014 12:00:00 AM'),
('9/19/2014 12:00:00 AM'),
('11/20/2014 12:00:00 AM'),
('12/18/2014 12:00:00 AM'),
('1/22/2015 12:00:00 AM')
;WITH CTE AS (
select DateColumn,ROW_NUMBER()OVER (ORDER BY DATECOLUMN)RN from @Table
)
select DATECOLUMN, DATECOLUMN As NewColumn from CTE WHERE RN > 1
UNION ALL
select DATECOLUMN,CASE WHEN RN = 1 then NULL ELSE ' ' END As NewColumn
from CTE WHERE RN = 1
ORDER BY DATECOLUMN