2014-06-12 35 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 
相關問題