表1中有2列(名称,编号),表2中有4列(名称,最小值,最大值,颜色)。
Table1 column(Number)包含一个数值,表2中有一个范围(Min和Max)。
我的要求是在Name列的基础上从table1中选择Name,Number,从table2中选择Color。
如果Table1中的Number值高于Table2的Max值,则需要从Color列中选择相同的行值。
**Table1 sample data:**
**Name Number**
A 33
B 17
**Table2 sample data:**
**Name Min Max Color**
A 0 20 RED
A 21 44 Yellow
A 45 45 Green
B 0 0.9 Green
B 1 15.99 Yellow
B 16 16 RED
**Output**
**Name Number Color**
A 33 Yellow
B 17 Red
如果您对上述疑问有任何疑惑,请与我联系......
注意:此查询适用于Tableau中的自定义SQL,因此无法使用CTE或其他方法。
答案 0 :(得分:0)
你的最后状况相当奇怪。但是,您可以简化逻辑:只需忽略Cluster
列并选择min小于或等于数字的最后一行:
max
答案 1 :(得分:0)
SELECT x.*
, COALESCE(y.color,z.color) color
FROM table1 x
LEFT
JOIN table2 y
ON y.name = x.name
AND x.number BETWEEN y.min AND y.max
JOIN
( SELECT a.*
FROM table2 a
JOIN
( SELECT name,MAX(max) max FROM table2 GROUP BY name ) b
ON b.name = a.name
AND b.max = a.max
) z
ON z.name = x.name;