小编AnO*_*oul的帖子

如何从以下查询中获取分层值?

我有一个名为的表Category,其中有一列名为CategoryID. 同一个表中有一个引用列,称为fParentCategoryID

我需要将所有类别 ID 及其子类别 ID 以逗号分隔。例如 -如果 10 的父类别 ID 为 1,如果 20 的父类别 ID 为 10,那么当我打印类别 ID 20 时,我需要以逗号分隔值打印 1 和 10 作为其父项。

我尝试了以下查询,但我得到NULLParChild列。请帮忙。

;WITH
  cteReports 
  AS
(
SELECT c.CategoryID,
       c.fParentCategoryID,
       [level] = 1,
       ParChild=cast(CAST(c.fParentCategoryID AS VARCHAR(200)) + ',' + CAST(c.CategoryID AS VARCHAR(200)) AS VARCHAR(MAX))
FROM   retail.Category c
WHERE c.fParentCategoryID is NULL
UNION ALL
SELECT c.CategoryID,
       c.fParentCategoryID,
       [level] + 1,
       ParChild = ParChild + ',' + …
Run Code Online (Sandbox Code Playgroud)

cte t-sql subquery sql-server-2012

8
推荐指数
1
解决办法
1074
查看次数

如何每 1 秒运行一次 SQL 作业?

我有一个 SQL 作业,它在给定时间处理最少的行。目前它每 10 秒运行一次,这是 Job Scheduler 中可用的最小值。但正因为如此,作业处理使用的表会被许多记录填满。所以我需要每 1 秒运行一次作业。怎样才能做到这一点?请指教。

sql-server sql-server-2012 jobs

6
推荐指数
1
解决办法
2万
查看次数

如何找到执行事件的存储过程?

我有一个问题,某个存储过程偶尔会消失,我需要找出哪个脚本删除了它。我发现这段代码给出了与删除这个存储过程相关的事件。

DECLARE @path NVARCHAR(260);

SELECT 
@path = REVERSE(SUBSTRING(REVERSE([path]), 
CHARINDEX(CHAR(92), REVERSE([path])), 260)) + N'log.trc'
FROM    sys.traces
WHERE   is_default = 1;

SELECT 
  LoginName,
  HostName,
  StartTime,
  ObjectName,
  TextData
FROM sys.fn_trace_gettable(@path, DEFAULT)
WHERE EventClass = 47    -- Object:Deleted
AND EventSubClass = 1
AND ObjectName like N'%usp_GetPendingConfiguration%'
ORDER BY StartTime DESC;
Run Code Online (Sandbox Code Playgroud)

有没有办法可以找到哪个存储过程或事件删除了这个存储过程?请指教。

sql-server-2008 stored-procedures profiler extended-events trace

6
推荐指数
1
解决办法
1798
查看次数

事务日志文件中存储了什么?

事务日志文件存储什么?是要执行的事务块,是开始执行事务之前的记录快照还是只是在事务块中找到的语句?

sql-server transaction-log

2
推荐指数
1
解决办法
3827
查看次数

有没有办法可以将以下查询缩短为单个查询?

我有以下查询。有没有一种方法可以将其放入一个查询中?如果没有,我可以进一步缩小它吗?请指教。

    DECLARE @highRegion TABLE(regionId INT, countR INT)
    DECLARE @lowRegion TABLE(regionId INT, countR INT)
    DECLARE @midRegion TABLE(regionId INT, countR INT)

    INSERT INTO @highRegion
    SELECT c.fRegionID,
           COUNT(1) AS VALUE
    FROM   census.Country c
           INNER JOIN census.IncomeGroup ig
                ON  c.fIncomeGroupID = ig.IncomeGroupID
    WHERE  ig.Name IN ('High income: nonOECD', 'High income: OECD')
    GROUP BY
           c.fRegionID

    INSERT INTO @lowRegion
    SELECT c.fRegionID AS VALUE,
           COUNT(1)
    FROM   census.Country c
           INNER JOIN census.IncomeGroup ig
                ON  c.fIncomeGroupID = ig.IncomeGroupID
    WHERE  ig.Name = 'Upper middle income'
    GROUP BY
           c.fRegionID

    INSERT INTO …
Run Code Online (Sandbox Code Playgroud)

performance sql-server optimization sql-server-2012 query-performance

1
推荐指数
1
解决办法
645
查看次数

如何用 SQL 中的 ISNULL 函数替换以下查询?

我有以下查询。出于性能优化的原因,我被要求用 SQL 中的 ISNULL 函数替换逻辑。我怎样才能做到这一点?请指教。

                   SELECT CASE 
                               WHEN tb1.[tag-value] IS NOT NULL THEN tb1.[tag-value]
                               ELSE 'N/A'
                          END     AS [tag-value]
                   FROM   @AgentTableFilt ta
Run Code Online (Sandbox Code Playgroud)

performance sql-server isnull query-performance

0
推荐指数
1
解决办法
377
查看次数