sql-server - 如何在 SQL Server 派生表中使用@@ROWCOUNT?
问题描述
我的查询中有多个 join ( left join
) 派生表,其中一个返回一个空结果集,这给我的WHERE
子句带来了问题。
WHERE 条款:
WHERE (ISNULL(BalanceThis.Balance,0) + ISNULL(RL.Balance,0) + ISNULL(OtherPayThis.Balance,0) + ISNULL(RUPBalThis.Balance,0)) <> 0
询问:
LEFT JOIN (
SELECT AE3.IDNo, SUM(ISNULL(AE3.Debit,0)) AS Debit, SUM(ISNULL(AE3.Credit,0)) AS Credit,
ABS(SUM(ISNULL(AE3.Debit,0))-SUM(ISNULL(AE3.Credit,0))) AS Balance
FROM AccountingEntries AE3 WITH (NOLOCK)
WHERE AE3.BookName NOT IN ('BFSL')
AND AE3.GLAccount = '1.03.01' AND ISNULL(AE3.TC,'') = 'LAC'
AND ((Datepart(MM,AE3.DateEntry)=Datepart(MM,@Date))
AND Datepart(YEAR,AE3.DateEntry)=Datepart(YEAR,@Date))
GROUP BY AE3.IDNo
) RL ON RL.IDNo = Loans.LoanID
结果集:
IDNo Debit Credit Balance
有没有办法在派生表为空时使用@@ROWCOUNT 返回静态结果集?
像这样:
IDNo Debit Credit Balance
EMP12 0 0 0
谢谢。
解决方案
这是做你想做的事情的一种方法:
WITH MyQuery As
(
-- This is your original query
-- This returns no rows
SELECT 'I have no rows' As OriginalQuery WHERE 0=1
)
-- Select from your query
SELECT * FROM MyQuery
UNION ALL
-- If there's nothing in your query, UNION ALL this part
SELECT 'I only appear when there are no rows' WHERE NOT EXISTS (SELECT * FROM MyQuery)
推荐阅读
- python - 升级到 python 后 Pipenv 不工作(安装 Homebrew)
- google-analytics - 对于 Google Analytics,urchin.js 是否仍然正常工作
- java - Drools 文件未找到异常
- javascript - 可以使用 setSelection 模拟选择吗?
- ubuntu - 在 Cron 选项卡中运行命令
- jmeter - 每周安排circleci工作?
- javascript - JS Web Scraper 挂起评估
- python - 我如何制作一个嵌套的“while循环”,它将使用给定的列表生成这个输出
- python-3.x - 尝试在 Windows 10 上运行的 pyCharm venv 中运行 pip install pyAudio 时出现此错误
- macos - 更改权限访问被拒绝 brew 链接 imagemagick