如何在单行中获取不匹配的记录

时间:2014-06-12 07:29:37

标签: sql sql-server

Table1

ID

001
002
001
001
001

...

我想查看来自id的{​​{1}},其中id应该是偶数。如果table1不同,那么我需要返回id其他2

如何为此编写查询?

3 个答案:

答案 0 :(得分:2)

ID s

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

ID COUNT

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

答案 1 :(得分: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   

答案 2 :(得分:0)

如果我正确理解了这个问题,则此处不需要CASE语句。我假设您希望在2为偶数时返回ID,在1为奇数时返回ID?只要ID列的值中没有任何非数字字符,您就可以执行以下操作:

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

如果您希望2ID为奇数时返回,1在偶数时返回(抱歉,问题尚不清楚),那么您可以执行此操作:

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