Я борюсь с запросом, в котором я хочу выбрать все строки данных книги, различающиеся некоторыми столбцами.
Данные моей таблицы:
BookRef BookFloor BookSection Orders OrderType
------- --------- ----------- ------ ---------
4 7 2 null 1
4 7 2 null 3
4 7 2 null 2
4 7 2 8 2
4 1 5 null 3
Для одного BookRef, в BookFloor, в BookSection, с отдельным OrderType, я хочу выбрать только строку, в которой есть Order. Если нет заказов, я хочу выбрать только одну строку.
Мой желаемый результат:
BookRef BookFloor BookSection Orders OrderType
------- --------- ----------- ------ ---------
4 7 2 null 1
4 7 2 null 3
4 7 2 8 2
4 1 5 null 3
Я пытаюсь использовать предложение HAVING
. Однако это не работает. Как я могу выполнить свой код, чтобы сделать то, что мне нужно?
Мой запрос:
select BookRef, BookFloor, BookSection, Orders, OrderType
from #myTempTable
GROUP BY OrderType, Orders, BookSection, BookFloor, BookRef
having count(BookRef) = 1 and count(BookFloor) = 1 and (count(OrderType) = 1 or (count(OrderType) > 1 and count(Orders) = 1))