【发布时间】:2019-07-09 02:24:55
【问题描述】:
每次运行我的脚本时,我都需要生成复杂的选择语句,这些语句会根据输入文件发生变化。
我有一个名称列表作为我的过滤器列表,并且我有一个在另一个线程中向我建议的 select 语句。在接下来的 6 个小时里,如果不坐在谷歌上拼凑起来,我不知道如何生成我需要的东西。
我需要为列表中的每个项目创建一个 MAX(CASE... 行。
list <- df$names
list:
1 square
2 ball
3 dog
4 triangle
5 hamster
6 circle
7 yellow
8 cat
suggested SELECT format:
SELECT
data.loc
, data.type
, MAX(CASE WHEN data.name = 'cat' THEN 1 ELSE 0 END) AS cat
, MAX(CASE WHEN data.name = 'hamster' THEN 1 ELSE 0 END) AS hamster
FROM
data
GROUP BY
data.loc
, data.type
我相信期望的输出是:
SELECT
data.loc
, data.type
, MAX(CASE WHEN data.name = 'square' THEN 1 ELSE 0 END) AS square
, MAX(CASE WHEN data.name = 'ball' THEN 1 ELSE 0 END) AS ball
, MAX(CASE WHEN data.name = 'dog' THEN 1 ELSE 0 END) AS dog
, MAX(CASE WHEN data.name = 'triangle' THEN 1 ELSE 0 END) AS triangle
, MAX(CASE WHEN data.name = 'hamster' THEN 1 ELSE 0 END) AS hamster
, MAX(CASE WHEN data.name = 'circle' THEN 1 ELSE 0 END) AS circle
, MAX(CASE WHEN data.name = 'yellow' THEN 1 ELSE 0 END) AS yellow
, MAX(CASE WHEN data.name = 'cat' THEN 1 ELSE 0 END) AS cat
FROM
data
GROUP BY
data.loc
, data.type
【问题讨论】: