Считать, чтобы начать с 1 - PullRequest
0 голосов
/ 27 апреля 2018

Я хочу оценить столбец с количеством. Я просматриваю таблицу, чтобы найти следующий номер счета. Если строка не существует, я хотел бы начать счет с 1, а не 0. Может ли кто-нибудь помочь мне с моим запросом ниже. Если строка существует, то я хотел бы просто взять столбец 3 и добавить 1 к следующему порядковому номеру.

SELECT
COl1, 
Col2,
CAST((MAX(col3) + 1) AS SMALLINT) AS col3
FROM table1
GROUP BY col1, col2

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Если вы хотите, чтобы все комбинации были с 1, если одного комбинации не существует, попробуйте это:

with combinaison as (
select distinct f1.col1, f2.col2 
from table1 f1 cross join table1 f2
)
SELECT f1.col1, f1.col2, ifnull(MAX(f1.col3), 0) + 1 AS col3
FROM table1 f1
GROUP BY f1.col1, f1.col2
union all
select f2.col1, f2.col2, 1 AS col3
from combinaison f2 left outer join table1 f3 on (f2.col1, f2.col2)=(f3.col1, f3.col2)
where f3.col1 is null
0 голосов
/ 27 апреля 2018

Вы используете функцию MAX (), которая возвращает наибольшее значение. Если вы хотите посчитать количество вхождений (строк), вам нужно использовать функцию COUNT ().

Редактировать

Требуется больше деталей, но в SQL Server вы можете попробовать что-то вроде этого:

SELECT col1, col2, count(1) + 1 as col3
FROM table1
GROUP BY col1, col2

Будет подсчитано количество различных пар col1 и col2 , затем добавится один к нему и будет отображаться как col3 . Из того, что я понимаю, вам не нужно использовать текущее значение col3 , поскольку вы его пересчитываете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...