Пропустить количество строк на основе значения одного столбца, используя ROW_NUMBER

Подход использования __dirname является наиболее надежным. Он всегда даст вам правильный каталог. Вам не нужно беспокоиться о ../../ в среде Windows, поскольку path.join() позаботится об этом.

Однако есть альтернативное решение. Вы можете использовать process.cwd() , который возвращает текущий рабочий каталог процесса. Эта команда отлично работает, если вы выполняете свое приложение-узел из каталога базового приложения. Однако, если вы выполняете свое приложение-узел из другого каталога, скажем, его родительского каталога (например, node yourapp\index.js), механизм __dirname будет работать намного лучше.

Надеюсь, что это поможет.

0
задан GKRobb 5 March 2019 в 16:09
поделиться

2 ответа

Это не проверено из-за отсутствия пригодных для использования образцов данных (изображение не пригодно для использования, так как волонтеры могут использовать его только для моей расшифровки), однако LAG должно помочь Вы достигаете этого:

WITH CTE AS
    (SELECT VisitID,
            EventActualDateTime,
            Code,
            LocationID,
            LAG(LocationID) OVER (PARTITION BY VisitID ORDER BY EventActualDateTime) AS PreviousLocationID
     FROM AdmVisitEvents
     WHERE VisitID = '6012227281'
       AND Code IN ('ENADMIN', 'TFRADMIN'))
SELECT ROW_NUMBER() OVER (PARTITION BY VisitID ORDER BY EventActualDateTime) AS RowNum,
       VisitID,
       EventActualDateTime,
       Code,
       LocationID
FROM CTE
WHERE LocationID != PreviousLocationID OR PreviousLocationID IS NULL;

Обратите внимание, что предложения PARTITION BY на самом деле не нужны в этих запросах из-за ваших WHERE (VisitID = '6012227281'). Поскольку VisitID может иметь только одно скалярное значение, PARTITION BY никогда не будет генерировать значения для другого «набора».

0
ответ дан Larnu 5 March 2019 в 16:09
поделиться

Вы можете использовать row_number() с предложением ties:

SELECT TOP (1) WITH TIES VisitID, EventActualDateTime, Code, LocationID
FROM AdmVisitEvents
WHERE VisitID = '6012227281' AND 
      Code IN ('ENADMIN','TFRADMIN')
ORDER BY ROW_NUMBER() OVER (PARTITION BY VisitID, Code, LocationID  ORDER BY EventActualDateTime);
0
ответ дан Yogesh Sharma 5 March 2019 в 16:09
поделиться