如何添加标记每个值之一的列?
How do I add a column that marks one of each value?
我要加入 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
我想添加一行来标记每个项目名称之一,以便我可以在 Tableau 中对其进行筛选并计算项目成本的总和。
例如:
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
我想你可以使用滞后功能,其实我很久以前就问过这个问题,我可以分享我的问题,也许对你有帮助。但是,您可以创建 table 时间 table 并根据滞后函数填充该列,而不是选择值:
您也可以使用排名:
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
我要加入 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
我想添加一行来标记每个项目名称之一,以便我可以在 Tableau 中对其进行筛选并计算项目成本的总和。
例如:
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
我想你可以使用滞后功能,其实我很久以前就问过这个问题,我可以分享我的问题,也许对你有帮助。但是,您可以创建 table 时间 table 并根据滞后函数填充该列,而不是选择值:
您也可以使用排名:
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