MSSQL Select - удаление дубликатов не будет работать - PullRequest
0 голосов
/ 24 апреля 2019

Эй, у меня есть проблема с предложением "GROUP BY". Это не будет соответствовать столбцу "день".

[число] => int
[date] => char (14)

Обычное дневное форматирование выглядит следующим образом:

20190424091650
20190424091550
20190424091450
20190424091350
20190424091250
20190424091150
20190424091050
20190424090950
20190424090850
20190424090750
20190424090650

Кто-нибудь знает, почему они не изменятся на что-то подобное (наибольшее число в определенный день):

31  20190424
34  20190423
20  20190422

Запрос:

SELECT
[number],
SUBSTRING([date], 0, 9) AS "day"

FROM
[LOG_VISITOR]

GROUP BY
[number],SUBSTRING([date], 0, 9)

ORDER BY  SUBSTRING([date], 0, 9) DESC,[number] DESC

Выход:

[number] [date]
31  20190424
28  20190424
27  20190424
26  20190424
15  20190424
14  20190424
34  20190423
14  20190423
13  20190423
12  20190423
11  20190423
10  20190423
9   20190423
8   20190423
7   20190423
6   20190423
5   20190423
4   20190423
3   20190423
2   20190423
1   20190423
0   20190423
20  20190422
19  20190422

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Попробуйте это.

    declare @table as Table
    (col nvarchar(14))
    insert into @table values (20190422091650)
    insert into @table values (20190422091550)
    insert into @table values (20190423091450)
    insert into @table values (20190423091350)
    insert into @table values (20190423091250)
    insert into @table values (20190423091150)
    insert into @table values (20190424091050)
    insert into @table values (20190424090950)
    insert into @table values (20190424090850)
    insert into @table values (20190424090750)
    insert into @table values (20190424090650)

    select count(col), cast(left(col,8) as datetime) as [date] from @table
    group by cast(left(col,8) as datetime)
0 голосов
/ 24 апреля 2019

вам нужно что-то подобное:

SELECT
Max([number]) as [number],
left([date],8) AS [day]

FROM
[LOG_VISITOR]

GROUP BY
left([date],8)

ORDER BY  left([date],8) DESC

если это правильно, вам не нужно заказывать по [number] DESC, потому что left([date],8) уникально

но я не понимаю, тебе нужно Max([number]) или Count([number]) Вы упомянули, что (highest number on specific day), но использовали count для заголовка столбца

...