TSQL Условные объединения и ссылки на размеры таблиц - PullRequest
1 голос
/ 16 октября 2019

Я пытаюсь выяснить, как долго длится возможность продажи в каждой из 5 разных стадий. Проблема состоит в сглаживании данных в Salesforce. Текущая структура ниже:

Таблица: OppHistory

TaskID | OppID | STAGE | IQ | DISCO | TECH | COMMERCIAL | CLOSE
  1     Op1       IQ       5     0      0        0          0
  2     Op1       DISCO    0     10     0        0          0
  3     Op1       TECH     0     0      15       0          0
  4     Op1       COMM     0     0      0        5          0
  5     Op2       IQ       2     0      0        0          0  
  6     Op2       CLOSE    0     0      0        0          3
  7     Op3       IQ       3     0      0        0          0

Таблица выше содержит ~ 417 тыс. Строк. Было создано только 49k индивидуальных возможностей, таким образом, 49k - это целевое количество строк для моей таблицы.

Я пробовал следующие соединения. Я чувствую, как будто я на 1-й линии просто нужно нажать

Ниже приводится таблица с 39M строк

SELECT a.OpportunityID, b.IQ, c.Disco, d.Tech, e.Commercial, f.Close
FROM OppHistory a
  JOIN OppHistory b ON a.OppID = b.OppID
  JOIN OppHistory c ON b.OppID = c.OppID
  JOIN OppHistory d ON c.OppID = d.OppID
  JOIN OppHistory e ON d.OppID = e.OppID
  JOIN OppHistory f ON e.OppID = f.OppID

Ниже приводится таблица с ~ 50k строкоднако включены только несколько выбранных возможностей, и каждый OppID повторяется примерно 500 раз

SELECT DISTINCT a.OpportunityID, b.IQ, c.Disco, d.Tech, e.Commercial, 
f.Close
FROM OppHistory a
  JOIN OppHistory b ON a.OppID = b.OppID
  JOIN OppHistory c ON b.OppID = c.OppID
  JOIN OppHistory d ON c.OppID = d.OppID
  JOIN OppHistory e ON d.OppID = e.OppID
  JOIN OppHistory f ON e.OppID = f.OppID

Ниже приведены 0 результатов в моей таблице

SELECT b.OppID, Duration AS IQDuration, Duration AS DiscoDuration, 
Duration AS TEDuration, Duration AS CommercialsDuration, Duration AS 
ClosedDuration
FROM OppHistory b,( 
    SELECT q.IQ AS Duration FROM OppHistory q
     UNION
    SELECT d.Disco AS Duration FROM OppHistory d
     UNION
    SELECT t.Tech AS Duration FROM OppHistory t
     UNION
    SELECT c.Comm AS Duration FROM OppHistory c
     UNION
    SELECT l.Closed AS Duration FROM OppHistory l
    )a

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

OppID |IQ | Disco | TechEval | Commercial | Close
 Op1    5     10       15         5          0
 Op2    2     0        0          0          3
 Op3    3     0        0          0          0

1 Ответ

0 голосов
/ 16 октября 2019

Я думаю, что вы после этого:

SELECT OppID, SUM(IQ) AS IQ, SUM(Disco) AS Disco, SUM(Tech) AS Tech, SUM(Commercial) AS Commercial, SUM(Close) AS Close
FROM OppHistory
GROUP BY OppID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...