【问题标题】:Combine two different field values when all the others are repeated当所有其他字段值都重复时,合并两个不同的字段值
【发布时间】:2018-09-26 12:52:51
【问题描述】:

当重复选择中的其他值时,我尝试组合两个小区。我试图组合的字段永远不会相同是选择中的最后一个。

SELECT field1,field2,field3,field4,field5,field6,table2.name FROM table1 INNER JOIN table2 ON table1.id = table2.table1_id INNER JOIN table2 ON table2.field8 = table2.id WHERE table1.id IN (SELECT table1_id FROM table2_table1 WHERE field8 IN (SELECT field8 FROM table3 WHERE field9 IN (1234))) AND table1.disabled = 0 AND table2.id IN (SELECT field8 FROM table3 WHERE field9 IN (1234))

所以基本上,当字段 1-6 相同并且最后一个字段有多个值时,记录只显示一行,最后一个字段结合了两个 varchar 值。

当前输出是这样的:

商店名称 1 1 main street Portland OR 97216 ROUTE-AB

商店名称 1 1 main street Portland OR 97216 ROUTE-BC

我想要这个:

商店名称 1 1 main street Portland OR 97216 ROUTE-AB,ROUTE-BC

注意:内部连接中的某些逻辑可能会关闭,因为我正在使用实时数据库并且只是尝试用通用名称替换名称。

【问题讨论】:

  • 你能分享一个例子和预期的输出
  • 请发布一些示例数据和预期结果。和...从哪个表中的一行。
  • 正确标记!!! MySQL SQL 服务器!!!这是哪一个????
  • 样本输入???预期输出???表结构???学习如何提问。 stackoverflow.com/help/how-to-ask
  • 我的sql或者sql server是什么数据库服务器?

标签: sql sql-server


【解决方案1】:

这是你要找的吗?

select field1,field2,field3,field4,field5,field6,max(table2.name)+' '+ case when max(table2.name)=min(table2.name) then '' else min(table2.name) end name

from table1 INNER JOIN table2 ON table1.id = table2.table1_id 
INNER JOIN table2 ON table2.field8 = table2.id 

where table1.id in (select table1_id from table2_table1 where field8 in (select field8 from table3 where field9 in (1234))) and table1.disabled=0 and table2.id in (select field8 from table3 where field9 in (1234))
group by field1,field2,field3,field4,field5,field6

【讨论】:

  • 这只给了我 table2.name 的第一个值。我需要一行来组合它的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-26
相关资源
最近更新 更多