У меня есть таблица с данными, как этотОбъединение нескольких строк в TSQL запроса
Road Item Response added_on
1 82 Yes 7/11/16
1 83 Yes 7/11/16
1 84 Yes 7/11/16
2 82 Yes 8/11/16
2 83 No 8/11/16
2 85 Yes 8/11/16
Это отражает оценку дороги, где все время оценивается «вещь». Некоторые предметы всегда будут выполняться во время оценки (82, 83), где другие необязательны (84, 85). Я хочу вернуть что-то, что объединяет все результаты оценки для дороги/даты, возвращая значение null, если этот предмет не был оценен. А также возвращение результатов только в прошлом месяце. Например,
Road 82 83 84 85 added_on
1 Yes Yes Yes 7/11/16
2 Yes No Yes 8/11/16
Я пробовал несколько самоубийств, подобных этому, но ничего не возвращает.
FROM assess AS A
JOIN assess AS B
ON A.road = B.road AND a.added_on = B.added on
JOIN assess AS C
ON A.road = C.road AND a.added_on = C.added on
JOIN assess AS D
ON A.road = D.road AND a.added_on = D.added on
WHERE A.item = '81'
AND B.item = '82'
AND (C.item = '83' OR C.item IS NULL)
AND (D.item = '84' OR D.item IS NULL)
AND datepart(month,A.added_on) = datepart(month,getdate()) -1
Чтобы уточнить,
-не дороги оценивается более чем один раз в день
-Каждый элемент только оценивается один раз, а иногда NULL т.е. не применяется
-Несколько дороги оцениваются каждый день
-Этот таблица имеет другие оценки, но мы не беспокоимся об этом.
Любые идеи? Использование SQL Server 2008. Спасибо.
Сколько предметов существует, и является ли это число фиксированным и известным? –
Похоже, вы ищете что-то вроде PIVOT - см. Https://msdn.microsoft.com/en-us/library/ms177410.aspx. –