【发布时间】:2018-07-26 05:04:02
【问题描述】:
我有这个选择查询:
SELECT CASE
WHEN (
SELECT isnull((
SELECT max(SeqNo)
FROM tblReconBankAccountHODetail
WHERE BankAccountID = '0MA27'
AND BusinessDate = '3/12/2018 12:00:00 AM'
), '0')
) = '0'
THEN (
SELECT max(SeqNo) + 1
FROM tblReconBankAccountHODetail
WHERE BankAccountID = '0MA27'
AND BusinessDate = '3/12/2018 12:00:00 AM'
)
ELSE '1'
END SeqNo
当我选择时,我试图根据几个条件获取SeqNo 的行号
SELECT isnull(SELECT max(SeqNo) FROM tblReconBankAccountHODetail WHERE BankAccountID = '0MA27')
它会给我正确的结果 147,我想做的是,如果该行存在,它将给我第二个查询的行数 + 1。这意味着 147+1 是 148 ,如果该行不存在,它会给我结果:1
但我的查询总是返回1,如果我删除then '1',我的查询将返回NULL。我的查询哪里做错了?
【问题讨论】:
-
你对这个
select isnull((SELECT max(SeqNo) from tblReconBankAccountHODetail where BankAccountID = '0MA27' and BusinessDate = '3/12/2018 12:00:00 AM'),'0')有什么好处? -
似乎您正在尝试创建自己的自动增量机制。 不要。这在任何多用户环境中都会失败。 Sql Server 已经有一个内置的标识列 - 使用它。
-
@Squirrel 结果将是
147
标签: sql sql-server sql-server-2008 tsql