powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка из нескольких таблиц + Последнее значение
3 сообщений из 3, страница 1 из 1
Выборка из нескольких таблиц + Последнее значение
    #40043576
marik63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста.
Нужно сделать выборку из 2х таблиц. Но в одной из них нужно взять только одну строку, в которой столбец time больше.

TableA
Код: sql
1.
2.
3.
a_id    |    a_meter    |    a_city
1        |    24             |    Moscow
2        |    26             |    Penza




TableB
Код: sql
1.
2.
3.
4.
b_id   |   b_meter |   b_number     |    b_time
1       |   24          |   111               |    2016-02-01 23:48:00.000
2       |   26          |   222               |    2016-02-01 23:48:00.000  
3       |   24          |   333               |    2017-22-09 23:48:00.000



Вывод:
Код: sql
1.
2.
24    |   Moscow   |   333
26    |   Penza      |   222



Сделал так:
Код: sql
1.
2.
3.
SELECT TableA.a_meter, TableA.a_city, TableB.b_number
FROM TableA
INNER JOIN TableB ON TableA.a_meter = TableB.b_meter



Выводится все три строки. А НУЖНО две. Два дня голову ломаю, не специалист в этом. Спасибо!


Скрипт для создания этой базы ниже.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
DROP TABLE TableA ;
DROP TABLE TableB ;

CREATE TABLE TableA (
  a_id INT NOT NULL,
  a_meter VARCHAR(50),
  a_city NVARCHAR(128),
  PRIMARY KEY (a_id));
    
CREATE TABLE TableB (
  b_id INT NOT NULL,
  b_meter VARCHAR(50),
  b_number VARCHAR(50),
  b_time DATETIME,
  PRIMARY KEY (b_id));
  
INSERT INTO TableA VALUES (1, 24, 'Moscow') ;
INSERT INTO TableA VALUES (2, 26, 'Penza') ;
INSERT INTO TableB VALUES (1, 24, 111, '2016-02-01 23:48:00.000') ;
INSERT INTO TableB VALUES (2, 26, 222, '2016-02-01 23:48:00.000') ;
INSERT INTO TableB VALUES (3, 24, 333, '2017-02-09 23:48:00.000') ;
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц + Последнее значение
    #40043581
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marik63
Сделал так:
Код: sql
1.
2.
3.
SELECT TableA.a_meter, TableA.a_city, TableB.b_number
FROM TableA
INNER JOIN TableB ON TableA.a_meter = TableB.b_meter


Код: sql
1.
2.
3.
4.
5.
with cte as (
  SELECT TableA.a_meter, TableA.a_city, TableB.b_number, row_number()over(partition by TableA.a_meter order by TableB.b_time desc) as rn
  FROM TableA
  INNER JOIN TableB ON TableA.a_meter = TableB.b_meter)
select a_meter, a_city, b_number from cte where rn = 1
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц + Последнее значение
    #40043584
marik63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court, Спасибо, работает!!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка из нескольких таблиц + Последнее значение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]