简体   繁体   English

结果为左连接条件的情况

[英]case when results as left join condition

Table 1表格1

Staff   category hours cost
1     Cleaning   5    20
1     Scrubbing  6    30
1     Cleaning   8    40
2     Scrubbing  4    30

table 2表2

` `

Staff  type vendor category 
 1      part  A Cleaning
 1      full  b Cleaning 
 1      full  c Scrubbing 
...’

To join these two tables I added a new col “type”:为了连接这两个表,我添加了一个新的 col “type”:

Case when table1.hours=8
Then ”full”
Else ”part”
End as “type”

From table1 
Left join table2 on type=table2.type
And Table 1.staff =table2.staff

And Table1.category=table 2.category而 Table1.category=table 2.category

My desired outcome is我想要的结果是

Staff  category   Cost vendor type
  1      Cleaning  20  A.     Part
  1      Cleaning  40  B.     Full
  1      Scrubbing 30  C.    Part

However the type=table2.type condition didn't work so it became然而 type=table2.type 条件不起作用,所以它变成了

Staff  category   Cost vendor type
  1      Cleaning  20  A.     Part
  1      Cleaning  20  B.     part
  1      cleaning  40. A      Full
  1.      Cleaning 40  B.     Full

If I have not understood, you want an implementation that creates a column in table1 and then joins with table2 on the condition table1.category = table2.category and table1.type = table2.type.如果我不明白,你想要一个实现,在 table1 中创建一个列,然后在 table1.category = table2.category 和 table1.type = table2.type 条件下与 table2 连接。 If that's the case you could try with the following:如果是这种情况,您可以尝试以下操作:

SELECT t1.Staff, t1.category, t1.cost, table2.vendor, t1.type
FROM (
  SELECT *, CASE WHEN table1.hours = 8 THEN "full" ELSE "part" END as type
  FROM table1
) t1
INNER JOIN table2
ON t1.category = table2.category
AND t1.type = table2.type
AND t1.staff = table2.staff

Below is for BigQuery Standard SQL下面是 BigQuery 标准 SQL

#standardSQL
SELECT staff, category, cost, vendor, type
FROM (
  SELECT *, IF(hours = 8, 'full', 'part') AS type 
  FROM `project.dataset.table1`
) t1 
LEFT JOIN `project.dataset.table2` t2 
USING (type, staff, category)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM