У меня есть логическая головоломка, которую я не могу понять.Как сравнить два столбца с комбинацией из двух столбцов в таблице в Oracle?
У меня есть таблица с двумя столбцами, представляющими PK. не Prods и Prod_Colour
TableA
Prods, Date_, Prod_Colour
One | null | Red
One | null | Blue
Two | 2012-06-08| Blue
Two | null | Yellow
Three| null | Green
Three| 2012-06-08| Red
В Дата repesents, что этот Prods больше не доступны с этой датой, однако дата может быть изменена, когда он снова становится доступным.
Я могу ограничивать строки на основе даты.
SELECT a.*
FROM TABLEA a
WHERE Date_ > '2012-06-11' or Date_ IS NULL
но то, что мне нужно сделать, это использовать эту таблицу в подзапросе, где оба Prods и Prod_Colour объединены в исключении ...
это не хорошее объяснение, но в основном в приведенном выше примере щупы три где Prod_Colour = 'Red' и Prods Two, где Prod_Colour = 'Blue' будет исключен, но Prods One будет включен как для Prod_Colour, где дата была> чем сегодня, так и для null.
Как всегда я ценю любые советы или подсказки.
Заранее спасибо.
Чтобы уточнить, у меня есть запрос, который выбирает из нескольких разных таблиц, среди одной из этих таблиц мне нужно включить prods и prod_Colour только там, где prods и Prod_Colour (объединенные как уникальный идентификатор для каждой строки) доступны в Таблица A, где date_ указывает, что они доступны. Комбинации не будут меняться, но дата_ может. Я бы использовал tDate, чтобы сегодня указывать дату сравнения.
Select O.Prods, O.Prod_Colour /*each combination needs to match the combination in TableA */
FROM TableB
Where O.Prods + O.Prod_C in (Select A.Prods + A.Prod_Colour
FROM TABLE A WHERE Date_ IS NULL or Date_ > tDate)
что-то в этом духе.
Это то, что я искал, Ты не представляешь, насколько запутались мои попытки. Мне нужно тщательно протестировать его, но исходные результаты выглядят точно так, как мне нужно. – dee