第 1 部分:关于聚合警告...
考虑到您的多个级别嵌套,恐怕没有直接的方法可以查看哪些记录触发了这些警告。
我认为你最好的办法是从顶级语句的 SELECT 部分中删除每个聚合函数,一次一个,然后运行查询,这样你就可以看到哪个聚合在顶层引起警告(如果有的话)
之后,您应该继续进行嵌套查询并将每个提供顶级聚合的子查询移动到单独的窗口并在那里运行它,检查警告。您应该对其他级别的嵌套重复此操作,以找出实际导致警告的原因。
您也可以采用以下方法。
第 2 部分:关于条件断点...
为了调试,您将每个嵌套表移出并将其数据放入临时表。之后,您检查该临时表中的空值。在 IF 语句中设置断点。我相信这是接近条件断点的最好的事情。(可以更改 IF 子句以构建其他条件)
这是一个可靠的例子,
而不是这个:
SELECT A.col1, A.col2, SUM(A.col3) as col3
FROM (SELECT X as col1, Y as col2, MAX(Z) as col3
FROM (SELECT A as X, B as Y, MIN(C) as Z
FROM myTableC
) as myTableB
) as myTableA
做这个:
SELECT A as X, B as Y, MIN(C) as Z
INTO #tempTableC
FROM myTableC
IF EXISTS (SELECT *
FROM #tempTableC
WHERE A IS NULL ) BEGIN
SELECT 'A' --- Breakpoint here
END
SELECT X as col1, Y as col2, MAX(Z) as col3
INTO #tempTableB
FROM #tempTableC
IF EXISTS (SELECT *
FROM #tempTableB
WHERE X IS NULL ) BEGIN
SELECT 'B' --- Breakpoint here
END
SELECT col1, col2, SUM(col3) as col3
FROM #tempTableB as myTableA