Как добавить столбец, помечающий одно значение? - PullRequest
0 голосов
/ 24 октября 2019

Я объединяю две таблицы в SQL. В настоящее время у меня есть SQL как:

SELECT table1.ProjectName AS "Project Name",
  table1.ProjectCost AS "Project Cost",
  table2.ExpenseName AS "Expense Name",
  table2.ExpenseCost AS "Expense Cost"
  FROM TABLE1 table1
  INNER JOIN TABLE2 table2
  ON table1.ProjectName = table2.ProjectName;

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

Project Name    | Project Cost  | Expense Name  | Expense Cost
------------------------------------------------------------
Project 1   | 123456        | Labor     | 12365  
Project 1   | 123456        | Rent      | 120000  
Project 2   | 8421              | (null)    | (null)  
Project 3   | 987654        | Paper     | 1023  
Project 3   | 987654        | Pens      | 546  

Я хочу добавить строку, которая помечает одно из каждого имени проекта, чтобы я мог фильтровать егов таблице и суммировать стоимость проектов.

EX:

Project Name    | Project Cost  | Expense Name  | Expense Cost  | Unique Value
----------------------------------------------------------------------------
Project 1   | 123456        | Labor     | 12365     | Y  
Project 1   | 123456        | Rent      | 12000     | N  
Project 2   | 8421      | (null)    | (null)        | Y  
Project 3   | 987654        | Paper     | 1023      | Y  
Project 3   | 987654        | Pens      | 546       | N  
Project 3   | 987654        | Party     | 9856      | N

Ответы [ 2 ]

1 голос
/ 24 октября 2019

Вы также можете использовать ранг:

select t.* 
     , case when lag(project_name) over (partition by 1 order by project_name, rownum) = project_name then 'N' else 'Y' end n
     , case when rank() over (partition by project_name order by rownum) >  1 then 'N' else 'Y' end n
from join_result
0 голосов
/ 24 октября 2019

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

SELECT Только одно значение для каждого идентификатора - SQL Server

...