2016-01-28 4 views
0

У меня есть две таблицы,Как вычесть число в where where?

tab1

enter image description here

tab2

enter image description here

Я хочу, чтобы результат с условием number от tab1 более чем на 1, а затем результат от number от tab2 вытеснены одним. У меня попробовать этот код,

SELECT T1.users AS UsrT1, T1.number AS NumT1, T2.users AS UsrT2, T2.number AS NumT2, T2.number - 1 AS NumT2_Min_1 
FROM tab1 T1 INNER JOIN tab2 T2 ON T1.id = T2.id 
WHERE T1.number > 1 

и это показано, как этот

enter image description here

, но я хочу, чтобы сделать результат что-то вроде этого

enter image description here

как я могу получить такой результат? Я думаю так:

SELECT T1.users AS UsrT1, T1.number AS NumT1, T2.users AS UsrT2, T2.number AS NumT2_Min_1 
FROM tab1 T1 INNER JOIN tab2 T2 ON T1.id = T2.id 
WHERE (T1.number > 1) - 1 

, но это полностью ошибка.

ответ

1

Похоже, вы хотите отфильтровать расчетное значение (numt2_min_1). Выполните фильтрацию в Outer query

WITH cte 
    AS (SELECT T1.users  AS UsrT1, 
       T1.number  AS NumT1, 
       T2.users  AS UsrT2, 
       T2.number  AS NumT2, 
       T2.number - 1 AS NumT2_Min_1 
     FROM tab1 T1 
       INNER JOIN tab2 T2 
         ON T1.id = T2.id) 
SELECT * 
FROM cte 
WHERE numt2_min_1 > 1 

или просто

SELECT T1.users  AS UsrT1, 
     T1.number  AS NumT1, 
     T2.users  AS UsrT2, 
     T2.number  AS NumT2, 
     T2.number - 1 AS NumT2_Min_1 
FROM tab1 T1 
     INNER JOIN tab2 T2 
       ON T1.id = T2.id 
WHERE T2.number - 1 > 1 
+0

Я ищу целый день, и вы решаете это как, через 3 минуты? Я действительно выгляжу глупым хахаха XD спасибо. – JTR

Смежные вопросы