2017-02-04 2 views
-1
SELECT 
    d.district_id, d.district_name, d1.district_id, d1.district_name 
FROM 
    tbl_district d, tbl_district d1 
WHERE 
    CASE 
     WHEN (d.district_id % 2) != 0 
      THEN d.district_id 
    END 
    AND d1.district_id = d.district_id+1; 
+0

vous devez comparer le résultat de l'instruction case avec quelque chose. Quel est exactement votre objectif? – GurV

+0

[Les mauvaises habitudes de kicker: en utilisant ancienne JOIN] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins. ASPX) - que de style ancien * liste séparée par des virgules des tables * style a été remplacé par le * bon * ANSI 'syntaxe JOIN' dans la norme ANSI - ** 92 ** standard SQL (** il y a 25 ans **) et son l'utilisation est découragée –

Répondre

0

Je suppose que vous essayez de filtrer les nombres impairs

SELECT 
    d.district_id, d.district_name, d1.district_id, d1.district_name 
FROM 
    tbl_district d 
INNER JOIN tbl_district d1 
     ON d1.district_id = d.district_id+1 
WHERE (d.district_id % 2) != 0 

commencent également à l'aide INNER JOIN au lieu de style ancien séparées par des virgules rejoindre

Si vous utilisez SQL SERVER 2012+ vous pouvez utiliser LEAD fonction fenêtre

SELECT * 
FROM (SELECT *, 
       Lead(district_id)OVER(ORDER BY district_id) AS next_dst, 
       Lead(district_name)OVER(ORDER BY district_id) AS next_name 
     FROM tbl_district) a 
WHERE a.district_id + 1 = a.next_dst 
     AND (district_id % 2) != 0 
0

« cas où » est une valeur, il n'est pas une opération logique.

Par exemple:

SELECT 
d.district_id, d.district_name, d1.district_id, d1.district_name 
FROM 
tbl_district d, tbl_district d1 
WHERE 
CASE 
    WHEN (d.district_id % 2) != 0 
     THEN d.district_id 
END+1 = d1.district_id 
0
CREATE PROCEDURE [dbo].[EvenOdd_District] 
AS 
BEGIN 

     SELECT d.district_id ,d.district_name,d1.district_id ,d1.district_name 
     FROM tbl_district d,tbl_district d1 WHERE d.district_id= 
     CASE 
      when (d.district_id%2)!=0 then d.district_id 
     END 
     AND d1.district_id=d.district_id+1; 
END