在SQL Server视图中插入重复行

lor*_*d30 1 sql t-sql sql-server views

我想知道在SQL Server 2008 R2中是否可以创建仅包含最后一列(DateTime DESC)的视图,但是应该再次在视图中复制最后一行.

因此,最终结果将是具有相同数据的两行的视图.

选择一行的查询很简单:

SELECT TOP 1 * 
FROM Reporting
ORDER BY DateTime DESC 
Run Code Online (Sandbox Code Playgroud)

要么

SELECT TOP 1 *
FROM Reporting
WHERE DateTime IN (SELECT MAX(DateTime) 
                   FROM Reporting)
Run Code Online (Sandbox Code Playgroud)

这只返回一行,但我想再次在视图中复制此行.

谢谢

got*_*tqn 6

上述答案中的语法无效.您不能拥有ORDER BY每个数据源UNION ALL.在最后的陈述中你只能有一个.所以,这是错误的:

SELECT TOP 1 * FROM Reporting ORDER BY DateTime DESC 
UNION ALL
SELECT TOP 1 * FROM Reporting ORDER BY DateTime DESC 
Run Code Online (Sandbox Code Playgroud)

应该这样做:

SELECT * FROM (SELECT TOP 1 * FROM Reporting ORDER BY DateTime DESC)
UNION ALL
SELECT * FROM (SELECT TOP 1 * FROM Reporting ORDER BY DateTime DESC);
Run Code Online (Sandbox Code Playgroud)

我会建议使用不同的方法.然后使用假数据源cross apply.

SELECT SI.*
FROM
(
    SELECT 1
    UNION ALL
    SELECT 2
) DS ([col])
CROSS APPLY
(

    SELECT TOP 1 * FROM Reporting ORDER BY DateTime DESC
) SI;
Run Code Online (Sandbox Code Playgroud)

您可以轻松地测试此语句的执行计划更好,只导致一次排序和索引扫描:

在此输入图像描述