Как выполнить следующее требование через Query in Hana SP12 - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть требование, в котором я хочу показать количество покупателей, делающих покупки в комбинации определенных форматов, следующим образом.

         Format A   Format B    Format C
Format A    10       20          30
Format B    20       30          40
Format C    30       40          50

Например, в следующем формате.

Желаемый вывод:

Количество клиентов, совершающих покупки только в формате А, равно 10.

Количество клиентов, совершающих покупки в форматах A и B, равно 20.

Количество клиентов, совершающих покупки в форматах A и C, равно 30.

Так и так далее.

Как это можно сделать с помощью запроса?

1 Ответ

0 голосов
/ 27 сентября 2018

Недостаточно информации, чтобы четко понять ваши требования, но я предположил, что ваши данные выглядят следующим образом:

TXT      | Format A |Format B  | Format C
----------------------------------------
Format A | 10       | 20       | 30
Format B | 20       | 30       | 40
Format C | 30       | 40       | 50

Теперь, если вы хотите повернуть эту таблицу, чтобы отобразить значения для каждой комбинации без дубликатов,Вы можете использовать логику следующим образом:

SELECT
    'A' || CASE WHEN RIGHT("TXT",1) = 'A' THEN '' ELSE RIGHT("TXT",1) END  AS "FORMAT" ,
    "Format A" AS "OUTPUT"
FROM
    "YOUR_TABLE"

    UNION

SELECT
    'B' || CASE WHEN RIGHT("TXT",1) = 'B' THEN '' ELSE RIGHT("TXT",1) END,
    "Format B" AS "OUTPUT"
FROM
    "YOUR_TABLE"                 
WHERE
    "TXT" != 'Format A'

    UNION

SELECT
    'C' || CASE WHEN RIGHT("TXT",1) = 'C' THEN '' ELSE RIGHT("TXT",1) END,
    "Format C" AS "OUTPUT"
FROM
    "YOUR_TABLE"
WHERE
    "TXT" NOT IN ('Format A',   'Format B')
;

И вывод будет выглядеть следующим образом:

FORMAT  | OUTPUT
A       | 10
AB      | 20
AC      | 30
B       | 30
BC      | 40
C       | 50
...