Sql 查询以下要求
我有一个带有列客户机代码的表 代码的范围为9990000和99999999 我要所有这些介于9990000到99999999之间的数字 未分配给客户端代码的 请帮助我进行此查询。如果您只想选择介于9990000和99999999之间的范围 如果要选择介于9990000和99999999之间的排除范围Sql 查询以下要求,sql,Sql,我有一个带有列客户机代码的表 代码的范围为9990000和99999999 我要所有这些介于9990000到99999999之间的数字 未分配给客户端代码的 请帮助我进行此查询。如果您只想选择介于9990000和99999999之间的范围 如果要选择介于9990000和99999999之间的排除范围 据我所知,问题是: SELECT * FROM Table WHERE ClientCode BETWEEN 99990000 AND -99999999 您需要生成可能帐户的完整列表,然后排除正
据我所知,问题是:
SELECT * FROM Table WHERE ClientCode BETWEEN 99990000 AND -99999999
您需要生成可能帐户的完整列表,然后排除正在使用的帐户
/*DECLARE VARIABLES FOR START AND END RANGE*/
DECLARE @StartAccount AS INT
DECLARE @EndAccount AS INT
SET @StartAccount = 99990000
SET @EndAccount = 99999999
;
--Generate a list of numbers to check against:..Thanks to Anthony Horne for this
WITH Nbrs_4( n ) AS ( SELECT 1 UNION SELECT 0 ),
Nbrs_3( n ) AS ( SELECT 1 FROM Nbrs_4 n1 CROSS JOIN Nbrs_4 n2 ),
Nbrs_2( n ) AS ( SELECT 1 FROM Nbrs_3 n1 CROSS JOIN Nbrs_3 n2 ),
Nbrs_1( n ) AS ( SELECT 1 FROM Nbrs_2 n1 CROSS JOIN Nbrs_2 n2 ),
Nbrs_0( n ) AS ( SELECT 1 FROM Nbrs_1 n1 CROSS JOIN Nbrs_1 n2 ),
Nbrs ( n ) AS ( SELECT 1 FROM Nbrs_0 n1 CROSS JOIN Nbrs_0 n2 )
SELECT n
FROM ( SELECT ROW_NUMBER() OVER (ORDER BY n)
FROM Nbrs ) D ( n )
WHERE n >= @StartAccount
AND n <= @EndAccount
AND n NOT IN
(SELECT ClientCode FROM CustomerTable) --Exclude Accounts that are in use
你试过什么吗?你用的是哪种RDBMS?什么是表模式?您尝试了什么?您是否有效地查找指定范围内所有未使用的可能的客户帐号?您需要为该范围内所有可能的值创建一个派生表,然后从“客户代码”列中不存在的数字中进行选择。您所说的“未分配给客户代码”是什么意思?OP需要与之相反的所有介于9990000-99999999之间且未分配给客户代码的数字。
SELECT * FROM Table WHERE ClientCode BETWEEN 99990000 AND -99999999
/*DECLARE VARIABLES FOR START AND END RANGE*/
DECLARE @StartAccount AS INT
DECLARE @EndAccount AS INT
SET @StartAccount = 99990000
SET @EndAccount = 99999999
;
--Generate a list of numbers to check against:..Thanks to Anthony Horne for this
WITH Nbrs_4( n ) AS ( SELECT 1 UNION SELECT 0 ),
Nbrs_3( n ) AS ( SELECT 1 FROM Nbrs_4 n1 CROSS JOIN Nbrs_4 n2 ),
Nbrs_2( n ) AS ( SELECT 1 FROM Nbrs_3 n1 CROSS JOIN Nbrs_3 n2 ),
Nbrs_1( n ) AS ( SELECT 1 FROM Nbrs_2 n1 CROSS JOIN Nbrs_2 n2 ),
Nbrs_0( n ) AS ( SELECT 1 FROM Nbrs_1 n1 CROSS JOIN Nbrs_1 n2 ),
Nbrs ( n ) AS ( SELECT 1 FROM Nbrs_0 n1 CROSS JOIN Nbrs_0 n2 )
SELECT n
FROM ( SELECT ROW_NUMBER() OVER (ORDER BY n)
FROM Nbrs ) D ( n )
WHERE n >= @StartAccount
AND n <= @EndAccount
AND n NOT IN
(SELECT ClientCode FROM CustomerTable) --Exclude Accounts that are in use