这只是我第二次使用堆栈溢出,所以对于如何更好地格式化我的问题,我愿意接受任何建设性的批评。
我有一个订单列表,我想创建一个有用的客户信息表。
我已经创建了一个新的表来标识唯一的客户(只使用一个选择的客户id),但是我不确定是否有合适的函数来准确地对他们进行分组,并根据他们的伴随字段生成一个布尔值。
我需要新字段来显示一个布尔值,用于判断客户的订单是否针对某个特定的产品sku。
假设这是源表
NAME | PRODUCT
------------
Andy | 1
Bill | 2
Cole | 2
Andy | 2
Bill | 1
Cole | 2
Dave | 3
我希望输出只对每个名称具有唯一的值,并带有一个布尔值,显示给定名称的任何记录是否接收到该产品。
NAME | HAS1 | HAS2 | HAS3
--------------------------
Andy | true | true | false
Bill | true | true | false
Cole | false | true | false
Dave | false | false | true
2条答案
按热度按时间jei2mxaa1#
下面是bigquery标准sql
如果您预先知道产品名称(例如示例中的“1”、“2”、“3”),并且只有很少的名称,那么您可以使用下面的简单版本
如果要应用于您问题中的示例数据(我假设您的产品是字符串数据类型)
结果是
如果事先不知道产品名称和/或产品的数量,只知道几个以下的版本就很方便了
输出完全相同
正如您在这里看到的,整个查询是动态组装的,所以您不必担心产品的数量和名称
下面的版本与上面的相同,但更易于管理/阅读
uinbv5nw2#
您可以使用聚合和简单逻辑:
你也可以使用
logical_or()
: