Sql 查询以下要求

Sql 查询以下要求,sql,Sql,我有一个带有列客户机代码的表 代码的范围为9990000和99999999 我要所有这些介于9990000到99999999之间的数字 未分配给客户端代码的 请帮助我进行此查询。如果您只想选择介于9990000和99999999之间的范围 如果要选择介于9990000和99999999之间的排除范围 据我所知,问题是: SELECT * FROM Table WHERE ClientCode BETWEEN 99990000 AND -99999999 您需要生成可能帐户的完整列表,然后排除正

我有一个带有列客户机代码的表

代码的范围为9990000和99999999

我要所有这些介于9990000到99999999之间的数字

未分配给客户端代码的

请帮助我进行此查询。

如果您只想选择介于9990000和99999999之间的范围

如果要选择介于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

你试过什么吗?你用的是哪种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