Как включить другой столбец, не помещая его в предложение GROUP BY? [SQL Server 2005] - PullRequest
1 голос
/ 23 декабря 2011

Я использую этот запрос ниже, чтобы получить последний серийный номер, который был добавлен

SELECT 
    SerialNo, 
    MAX(AddDate) AS AddDate
FROM 
    tst_EquipmentItem 
WHERE 
    ControlNo = 'TM-00012'
GROUP BY 
    SerialNo
ORDER BY 
    AddDate
OUTPUT:
SerialNo////AddDate
=======================================
TM-00012////2008-08-05 10:25:00.000

Теперь в таблице tst_Equipment есть столбец ControlNo.Если я включаю ControlNo в приведенную выше инструкцию, я получаю другой вывод

OUTPUT
SerialNo///ControlNo///AddDate
====================================================
TM-00012///TM-CGI-F-0027///2004-02-09 08:20:00.000
TM-00012///TM-EN-N-0068///2008-08-05 10:25:00.000

Как включить столбец ControlNo без необходимости помещать его в предложение GROUP BY, чтобы я мог получить последний ControlNo для каждого SerialNo

Ответы [ 2 ]

2 голосов
/ 23 декабря 2011

Не зная ваших данных, я бы сделал:

select distinct t.serialNo, e.controlNo, t.addDate
from tst_EquipmentItem e
join (
    select serialNo, max(addDate) as addDate
    from tst_EquipmentItem 
    group by serialNo
) t on t.serialNo = e.serialNo and t.addDate = e.addDate
1 голос
/ 23 декабря 2011

Он должен быть либо в группе по предложению, либо быть частью вычисляемого значения.Например,

SUM(ControlNo), MAX(ControlNo), MIN(ControlNo).

Я бы предложил max в вашем случае, предполагая, что числа увеличиваются.

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