一般来说,我对大查询和sql还不太熟悉,到目前为止,我已经花了几天时间来研究它了。我在目前的目标上花了好几个小时,似乎找不到实现目标的方法。。。
我想我的concat是对的,但是我无法摆脱重复,因为每个specid有一行。
也不知道一旦我摆脱他们,我如何加入第三个表没有更多的重复?
数据:
t1
SUMID Reference Type Size
1001 234 Round 120
1002 234 Square 60
t2
DETID SUMID SPECID Value
2001 1001 1 TRUE
2002 1001 2 TRUE
2003 1001 3 FALSE
2004 1001 4 TRUE
2005 1001 5 FALSE
2006 1001 6 TRUE
2007 1002 1 FALSE
2008 1002 2 TRUE
2009 1002 3 FALSE
2010 1002 4 TRUE
2011 1002 5 TRUE
2012 1002 6 TRUE
t3
SPECID Description
1 Blue
2 Red
3 Green
4 Orange
5 Yellow
6 Purple
输出
t1.Reference t1.Type t1.Size t3.Description
234 Round 120 Blue, Red, Orange, Purple
234 Square 60 Red, Orange, Yellow, Purple
我已经做到了以下几点,但就我的一生而言,我无法摆脱它。
# standardSQL
SELECT
t1.SUMID, t1.Reference, t1.Type, t1.Size, t2.Description
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.T2_ID = t2.T2_ID
LEFT JOIN (
SELECT *
FROM (
select SUMID, Value,
CONCAT(
STRING_AGG(CAST(SPECID AS STRING), ', ') OVER(PARTITION BY SUMID, Value)
) SPEC_IDs
from Table2
)) t2 ON t1.SUMID = t2.SUMID
WHERE t2.Value = TRUE
如果有人能帮我解决这个问题,我真的很感激?我希望一旦我看到它是如何工作的,它会点击。
1条答案
按热度按时间zd287kbt1#
如果我理解正确,这是一些
JOIN
具有聚合的s: