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;
-1
A
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
vous devez comparer le résultat de l'instruction case avec quelque chose. Quel est exactement votre objectif? – GurV
[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 –