Ближе, отлично. Тем не менее, Анкара 2, так как актуальны только последние 5 строк. Но это небольшое изменение.

Server я пытаюсь подсчитать количество дней с тех пор, как наблюдалась та же погода, что и сегодня (предположим, сегодня 6 августа 2018 года), впервые за последние 5 дней. В городе.

Вот данные:

+---------+---------+--------+--------+--------+
| Date    | Toronto | Cairo  | Zagreb | Ankara |
+---------+---------+--------+--------+--------+
| 1.08.18 | Rain    | Sun    | Clouds | Sun    |
| 2.08.18 | Sun     | Sun    | Clouds | Sun    |
| 3.08.18 | Rain    | Sun    | Clouds | Rain   |
| 4.08.18 | Clouds  | Sun    | Clouds | Clouds |
| 5.08.18 | Rain    | Clouds | Rain   | Rain   |
| 6.08.18 | Rain    | Sun    | Sun    | Sun    |
+---------+---------+--------+--------+--------+

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

Вот тот, для Торонто ...

SELECT 
    DATEDIFF(DAY, MIN([Date]), GETDATE()) + 1 
FROM
    (SELECT TOP 5 * 
     FROM Weather 
     WHERE [Date] <= GETDATE()
     ORDER BY [Date] DESC) a
WHERE 
    Toronto = (SELECT TOP 1 Toronto 
               FROM Weather
               WHERE DataDate = GETDATE())

... который правильно возвращает 4, поскольку сегодня идет дождь, и первым дождем за последние 5 дней было 3 августа.

Но то, что я хочу вернуть, это таблица, подобная этой:

+---------+-------+--------+--------+
| Toronto | Cairo | Zagreb | Ankara |
+---------+-------+--------+--------+
| 4       | 5     | 1      | 5      |
+---------+-------+--------+--------+

Как это возможно?

Ответы на вопрос(2)

Ваш ответ на вопрос