2014-06-12 33 views
0

Table1如何单列获得非匹配记录

ID 

001 
002 
001 
001 
001 

... 

我要检查的idtable1其中id应该是偶数。如果id是不同的,那么我需要返回2否则1

如何为此编写查询?

+1

你想查找“偶数”的Id或Id的偶数次出现吗? –

+1

“在单行中获取不匹配的记录”您的标题与您的问题有什么关系? –

+0

你成功了吗? – potashin

回答

2

对于ID小号

SELECT (CASE WHEN [ID]%2 = 1 THEN 1 ELSE 2 END) 
FROM [table] 

对于IDCOUNT

SELECT (CASE WHEN COUNT([ID])%2 = 1 THEN 1 ELSE 2 END) 
FROM [table] 
GROUP BY [ID] 
0

请检查。

declare @t table (id varchar(50)) 

insert into @t values('001'),('001'),('002'),('002'),('001'),('002'),('002') 

SELECT 
    CASE WHEN cast([ID] as int) %2 = 1 THEN 1 ELSE 2 END oddOrEven 
FROM @t 

--for counting 
;with cte as 
(
    SELECT [ID]%2 value, 
     CASE cast([ID] as int) %2 when 1 THEN count(1) else count(2) END oddCount   
    FROM @t 
     group by id 
) 
select * from cte 
0

如果我理解正确的问题,CASE声明没有必要在这里。我假设你想在ID是偶数时返回2,而当ID是奇数时1?只要有不在ID列的值的任何非数字字符,你可以做到以下几点:

SELECT [ID], 2 - CAST([ID] AS int) % 2 
    FROM Table1 

如果你想返回2ID是奇数,而且1当它甚至(对不起,这个问题并不清楚),那么你可以这样做:

SELECT [ID], CAST([ID] AS int) % 2 + 1 
    FROM Table1 
相关问题