如何用SQL选择字符串的最长值?

0

【以下的问题经过翻译处理】 我正在编写一个查询,选择不同的条形码。每个条形码都有一个特定的序列。但是在数据库中,条形码存在多次。每次添加序列时,条形码在不同的行中可见。例如:

Enter image description here

我不想使用日期过滤器,因为有时会在同一日期发生两个序列。现在我已经使用了三个选择过滤器,但我想知道是否有其他方法可用。

SELECT wc.dn_barcode , ( SELECT da_waarnemingsequence FROM collo_dwh.collo wc2 WHERE wc2.dn_barcode = wc.dn_barcode AND length(sequence) = ( SELECT max(length(sequence) FROM collo_dwh.collo wc3 WHERE wc3.dn_barcode = wc2.dn_barcode ) ) sequence

FROM (database wc)

WHERE wc.da_datum_sortering1 BETWEEN "date_add"('day', -7, current_date) AND current_date AND wc.da_landcode_gea = 'NL' AND wc.sequence LIKE '%A1%B1%' AND wc.sequenceNOT LIKE '%I%'

profile picture
专家
已提问 5 个月前31 查看次数
1 回答
0

【以下的回答经过翻译处理】 以下是使用窗口函数的另一种替代方案:

SELECT barcode, sequence, d FROM (
     SELECT barcode, sequence, d, rank() OVER (PARTITION BY barcode
                             ORDER BY length(sequence) desc) AS r
     FROM "db1"."barcodes" 
) as windw
WHERE windw.r = 1
profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则