【问题标题】:How to make a start writing this CTE in SQL Server?如何开始在 SQL Server 中编写此 CTE?
【发布时间】:2015-04-03 21:20:00
【问题描述】:

我有一个表,其中包含数据库中不同元素的数据。这是数据库中所有元素的计数(每天都会恢复,因此不可能触发 DDL/DML)

表格如下:

LogDate SYSTEM_TABLE    VIEW    SQL_TABLE_VALUED_FUNCTION   DEFAULT_CONSTRAINT  SQL_STORED_PROCEDURE    RULE    FOREIGN_KEY_CONSTRAINT  SERVICE_QUEUE   SQL_INLINE_TABLE_VALUED_FUNCTION    CHECK_CONSTRAINT    USER_TABLE  PRIMARY_KEY_CONSTRAINT  INTERNAL_TABLE  TYPE_TABLE  SQL_TRIGGER SQL_SCALAR_FUNCTION UNIQUE_CONSTRAINT
20150204    45  253 60  1401    5259    2   784 3   4   95  2141    1604    26  4   16  195 33
20150203    45  253 60  1401    5259    2   784 3   4   95  2141    1604    16  4   16  195 33
20150202    45  253 60  1401    5259    2   784 3   4   95  2141    1604    21  4   16  195 33
20150201    45  253 60  1401    5259    2   784 3   4   95  2141    1604    25  4   16  195 33
20150131    45  253 60  1401    5259    2   784 3   4   95  2141    1604    21  4   16  195 33

我想做的是将最近的日志日期(20150204)与之前的日志日期(20150203)进行比较,看看元素之间是否有任何变化。然后,这将向相关开发人员发送一封电子邮件,供他们调查(但此部分目前并不重要,现在仅突出显示日志日期之间的更改)

预计到达时间:

它是使用临时表等的更大查询的一部分:

IF OBJECT_ID('tempdb..#DBTotsTEMP') is not null drop table #DBTotsTEMP

--declare variables
DECLARE @DynamicPivotQuery as NVARCHAR(MAX)
DECLARE @ColumnName as NVARCHAR(MAX)

SELECT     RIGHT(date, 4) + RIGHT(LEFT(date, 5), 2) + LEFT(date, 2) AS LogDate, [count] as CNT, type_desc
INTO            [#DBTotsTEMP]
FROM         BI_STG.SSRS.MH_DB_Totals
ORDER BY LogDate DESC

SELECT @ColumnName= ISNULL(@ColumnName + ',', '') + QUOTENAME([type_desc])
FROM (
        SELECT DISTINCT [type_desc] FROM #DBTotsTEMP) as TypeDescs

SET @DynamicPivotQuery = 
N'SELECT LogDate, ' + @ColumnName + '
    INTO #MH_DB_Totals
    FROM #DBTotsTEMP
    PIVOT (SUM([CNT])
        FOR [type_desc] in (' + @ColumnName + ')) as PVTTable
        ORDER BY LogDate desc
        select * from #MH_DB_Totals'

EXEC sp_executesql @DynamicPivotQuery

我不知道 CTE 部分应该放在哪里,或者如何突出显示数字中的变化!

【问题讨论】:

  • 您是否已经尝试过?有什么问题?

标签: sql sql-server-2008 common-table-expression


【解决方案1】:

对其进行排序,使用带有 IDENTITY 函数的 SELECT INTO 添加行号,然后在 rowid = rowid-1 上将临时表连接回自身。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多