如何使用联接查询一列中具有多个值的表

Si8

表格1:

A       B       C
Test    1       This
Test1   1;4     That
Test2   7       What
Test3   6;2     Which
Test4   1;2;7   Where

表2:

X       Z
1       Sun
2       Mon
3       Tue
4       Wed
5       Thu
6       Fri
7       Sat

SQL:

Select
    t1.A,
    t2.Z
from
    [dbo].[Table 1] t1
    inner join [dbo].[Table2] t2
    on t1.B = t2.X

它仅适用于在列中只有1个条目B但在2个或更多条目失败的行

我该如何修改Sql,以便它给我这样的结果:

A       Z
Test    Sun
Test1   Sun;Wed
Test2   Sat
Test3   Fri;Mon
Test4   Sun;Mon;Sat
约翰·卡佩莱蒂

使用Strings和XML的乐趣,这里有一点(按比例缩小)标记数据的技术。

创建一些样本数据

Declare @Table1 table (A varchar(100),B varchar(100), C varchar(100))
Insert Into @Table1 values
('Test','1','This'),('Test1','1;4','That'),('Test2','7','What'),('Test3','6;2','Which'),('Test4','1;2;7','Where')

Declare @Table2 table (X int,Z varchar(100))
Insert Into @Table2 values
(1,'Sun'),(2,'Mon'),(3,'Tue'),(4,'Wed'),(5,'Thu'),(6,'Fri'),(7,'Sat')

SQL

Declare @XML xml,@Str varchar(max) = (Select a,z='['+replace(b,';','];[')+']' From  @Table1 For XML Raw)
Select @Str = Replace(@Str,'['+cast(X as varchar(25))+']',Z) From  @Table2
Select @XML = @Str

Select a = r.value('@a','varchar(100)')
      ,z = r.value('@z','varchar(100)')
From  @XML.nodes('/row') as A(r)

退货

a       z
Test    Sun
Test1   Sun;Wed
Test2   Sat
Test3   Fri;Mon
Test4   Sun;Mon;Sat

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何加入多个表并将某个列(在具有不同值的所有表中重复)放入一个具有一列的目标表中

我们如何计算多个列的特定值,而表具有唯一列

一列中的多个表更新具有一组不同的值和条件

查询具有多个值但在同一表的不同表中的多个列

根据具有多个记录的表中另一列的不同值添加值

MySQL-如何从一列中查询具有不同值的不同列

如何使用SQLite将一个表的count()添加到具有多个其他表的联接的SQL查询中?

SQL 来自具有内部联接的同一列的多个值

如何使用一个SQL查询更新一列中的多个值?

MySQL 查询一列中具有相同值而另一列中具有不同值的行

SQL使用多个查询从同一表中获取多个值(来自同一列)

无法使用HAVING子句中具有聚合值的子查询表联接中的单值列

如何在Laravel查询构建器中获取一列具有最高值而另一列具有特定值的行

如何从联接具有一对多关系的3个表中查询唯一或不同的值

如何从PHP的单个表中联接Mysql中具有多个条件的多个查询?

查询表的一列有多个值,而另一列有相同的值?

如何使用Python获取另一列中具有相同值的值的总和?

使用某些字段中具有多个值的 MySQL 查询创建一个表

如何查找在另一列的不同行中具有多个值的列值的总长度

如何查找另一列的不同行中具有多个值的列值的总长度BY LOCATION

如何找出具有多个条件的相同值并将同一列的值放在不同的列中?

从查询中获得聚合列,并具有多个联接到单个表

如何在理论中的同一列上实现对多个表的联接

根据一列值联接SQL表中的多行

MYSQL:从一列中选择具有多个值的查询

如何编写一个列中具有多个值的LINQ查询?

当将值插入/更新/删除同一表中的另一列时,如何使一列具有自动反映的值?

如何通过使用“哪个”选项获得一列中具有“零”值的行号?

如果另一列具有多个值,如何选择按列分组的值