заполнить значение строки в новый столбец с разбивкой по дате - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть 5 столбцов, я хочу создать 6-й столбец со значением 'x5 строки' столбца $, разделенного по дате.

На данный момент единственный способ, которым я вижу, - это отключить его и поместить каждое значение $ в отдельные столбцы.

Но возможно ли сделать столбец 6 с использованием некоторой ссылки?

date    sort    category    %   $                   6 th column(to be created)
1/31/2017   0   x1  5.27478     5,406,339,989.60    -31,567,300
1/31/2017   4   x2  5.03073     -21,611,583.57      -31,567,300
1/31/2017   3   x3  5.91494     4,122,330.91        -31,567,300
1/31/2017   1   x4  5.34965     5,754,418,975.28    -31,567,300
1/31/2017   5   x5  5.29412     -31,567,300         -31,567,300
1/31/2017   2.2 x6  7.99999     -250,488.32         -31,567,300
1/31/2017   6   x7  6.16547     -4,984,148.73       -31,567,300
2/28/2017   4   x1  5.04686     -20,182,279.41      5,807,539,814.96
2/28/2017   2.2 x2  5.33533     -176,195.29         5,807,539,814.96
2/28/2017   6   x3  6.13669     -3,455,249.32       5,807,539,814.96
2/28/2017   2.1 x4  5.48088     49,709,482.70       5,807,539,814.96
2/28/2017   1   x5  5.27017     5,807,539,814.96    5,807,539,814.96
2/28/2017   0   x6  5.34965     5,754,418,975.28    5,807,539,814.96
2/28/2017   3   x7  5.32231     23,327,653.12       5,807,539,814.96

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Вы можете попробовать что-то подобное, чтобы получить то, что вам нужно,

      SELECT a.*,b.$2
      FROM TABLE a
      LEFT JOIN
      (SELECT Date,sum($) as $2
      FROM Table 
      WHERE category = 'x5'
      GROUP BY  Date) b
      on a.Date=b.Date
1 голос
/ 07 февраля 2020

Вы можете использовать оконную функцию (в этом случае MIN, но MAX будет работать одинаково хорошо), чтобы выбрать только значение $, когда категория x5:

SELECT *,
       MIN(CASE WHEN category = 'x5' THEN Dollar END) OVER (PARTITION BY date) AS "6th Column"
FROM data

Обратите внимание, я предположил, что ваш столбец $ на самом деле называется Dollar, вы можете изменить его при необходимости.

Демонстрация на SQLFiddle (для SQL Сервер, но она должна нормально работать на Teradata )

...