向 Table 添加一列,将具有特定 ID 的每个条目标记为另一个值 - SQL/BigQuery
Add a Column to a Table that marks every entry with a specific ID as another value - SQL/BigQuery
这是我第一次 post 来这里,所以我希望我提供了足够的信息来明确我的问题。
我有一个 SQL/BigQuery table 可以简化为以下内容:
Sale ID
Item
Description
2540
111
Apple
2540
112
Lettuce
2541
113
Bread
基本上我想要实现的是创建一个新列,每当销售 ID 具有给定的项目时,标记将放置在共享该销售 ID 的所有行上。因此,以项目 111 为例,由于 Apple 是一种水果,因此前两行将包含标记“Contains Fruit in Sale”,新的 table 将如下所示:
Sale ID
Item
Description
Marker
2540
111
Apple
Contains Fruit in Sale
2540
112
Lettuce
Contains Fruit in Sale
2541
113
Bread
希望这是有道理的。我不知道该怎么做。预先感谢您的帮助!
根据您的要求考虑以下查询:
SELECT
A.SaleID,
A.ItemID,
A.Description,
B.Marker
FROM
`project.dataset.table` A
LEFT JOIN (
SELECT
SaleID,
Marker
FROM (
SELECT
SaleID,
CASE
WHEN Description IN ('Apple', 'Mango') THEN 'Contains Fruit in Sale'
END
AS Marker
FROM
`project.dataset.table`)
WHERE
Marker='Contains Fruit in Sale' ) B
ON
A.SaleID =B.SaleID;
实际Table:
结果:
这是我第一次 post 来这里,所以我希望我提供了足够的信息来明确我的问题。
我有一个 SQL/BigQuery table 可以简化为以下内容:
Sale ID | Item | Description |
---|---|---|
2540 | 111 | Apple |
2540 | 112 | Lettuce |
2541 | 113 | Bread |
基本上我想要实现的是创建一个新列,每当销售 ID 具有给定的项目时,标记将放置在共享该销售 ID 的所有行上。因此,以项目 111 为例,由于 Apple 是一种水果,因此前两行将包含标记“Contains Fruit in Sale”,新的 table 将如下所示:
Sale ID | Item | Description | Marker |
---|---|---|---|
2540 | 111 | Apple | Contains Fruit in Sale |
2540 | 112 | Lettuce | Contains Fruit in Sale |
2541 | 113 | Bread |
希望这是有道理的。我不知道该怎么做。预先感谢您的帮助!
根据您的要求考虑以下查询:
SELECT
A.SaleID,
A.ItemID,
A.Description,
B.Marker
FROM
`project.dataset.table` A
LEFT JOIN (
SELECT
SaleID,
Marker
FROM (
SELECT
SaleID,
CASE
WHEN Description IN ('Apple', 'Mango') THEN 'Contains Fruit in Sale'
END
AS Marker
FROM
`project.dataset.table`)
WHERE
Marker='Contains Fruit in Sale' ) B
ON
A.SaleID =B.SaleID;
实际Table:
结果: