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
ответ
0
Я предполагаю, что вы пытаетесь фильтровать нечетные числа
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
начать Кроме того, используя INNER JOIN
вместо старого стиля запятую присоединиться
Если вы используете SQL SERVER 2012+
, то вы можете использовать LEAD
функция окна
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
«Случай, когда» - это значение, это не логическая операция.
Например:
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
Вам нужно сравнить что-то с результатом. Какова ваша цель? – GurV
[Плохие привычки пинать: использование JOIN в старом стиле] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins. aspx) - стиль старого стиля * разделенный запятыми список таблиц * был заменен на * правильный * ANSI 'JOIN' синтаксис в ANSI - ** 92 ** SQL Standard (** 25 лет ** назад) и его использование не рекомендуется –