ВЫБРАТЬ
РегистрСв.UID,
МАКСИМУМ(ВЫБОР
КОГДА РегистрСв.ИмяРеквизита = "Реквизит1"
ТОГДА РегистрСв.Значение
КОНЕЦ) КАК Реквизит1,
МАКСИМУМ(ВЫБОР
КОГДА РегистрСв.ИмяРеквизита = "Реквизит2"
ТОГДА РегистрСв.Значение
КОНЕЦ) КАК Реквизит2,
МАКСИМУМ(ВЫБОР
КОГДА РегистрСв.ИмяРеквизита = "Реквизит3"
ТОГДА РегистрСв.Значение
КОНЕЦ) КАК Реквизит3
ИЗ
РегистрСведений.РегистрСв КАК РегистрСв
ГДЕ
(РегистрСв.ИмяРеквизита = "Реквизит1"
ИЛИ РегистрСв.ИмяРеквизита = "Реквизит2"
ИЛИ РегистрСв.ИмяРеквизита = "Реквизит3")
СГРУППИРОВАТЬ ПО
РегистрСв.UID
Вариант2:
ВЫБРАТЬ
РегистрСв1.UID,
РегистрСв1.Значение КАК Реквизит1,
РегистрСв2.Значение КАК Реквизит2,
РегистрСв3.Значение КАК Реквизит3
ИЗ
РегистрСведений.РегистрСв КАК РегистрСв1
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСв КАК РегистрСв2
ПО (РегистрСв2.ИмяРеквизита = "Реквизит2")
И РегистрСв1.UID = РегистрСв2.UID
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСв КАК РегистрСв3
ПО (РегистрСв3.ИмяРеквизита = "Реквизит3")
И РегистрСв1.UID = РегистрСв3.UID
ГДЕ
РегистрСв1.ИмяРеквизита = "Реквизит1"
использование ИЛИ в ГДЕ отключает использование индексов
Вариант2
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший