Вернуть разные столбцы в результате запроса в postgresql - PullRequest
0 голосов
/ 06 июля 2018

У меня есть таблица, которая определяется как:

CREATE TABLE analysis (
       id BIGSERIAL NOT NULL,
       offer1 numeric(19, 2) NOT NULL,
       roi1 numeric(19, 2) NOT NULL,
       offer2 numeric(19, 2) NOT NULL,
       roi2 numeric(19, 2) NOT NULL, 
       offer3 numeric(19, 2) NOT NULL,
       roi3 numeric(19, 2) NOT NULL,
       PRIMARY KEY (id));

В основном содержит количество предложений товара. Я ищу способ выбрать id и только два столбца в качестве предложения и roi, где roi является самой большой ценностью среди всех предложений. Как это можно сделать?

1 Ответ

0 голосов
/ 06 июля 2018

Если вы действительно собираетесь использовать это только для 3 предложений и 3 рупий, то вы можете сделать это:

SELECT
  id,
  CASE
    WHEN offer1 > offer2 THEN
      CASE WHEN offer1 > offer3 THEN offer1 ELSE offer3 END
    WHEN offer2 > offer3 THEN
      offer2
    ELSE
      offer3
  END AS offer,
  CASE
    WHEN offer1 > offer2 THEN
      CASE WHEN offer1 > offer3 THEN roi1 ELSE roi3 END
    WHEN offer2 > offer3 THEN
      roi2
    ELSE
      roi3
  END AS roi
FROM
  analysis

Если вы собираетесь делать это более чем на 3, вы можете рассмотреть другую структуру данных, где у вас есть что-то вроде:

CREATE TABLE
  offers
(
  id BIGSERIAL NOT NULL,
  good_id BIGINT,
  offer numeric(19, 2) NOT NULL,
  roi numeric(12, 2) NOT NULL
)

Где все предложения на один товар делят один и тот же товар_ид. Тогда вы могли бы сделать совокупный запрос, чтобы получить ваш ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...