【发布时间】:2015-04-16 23:57:13
【问题描述】:
我有一个我正在努力处理的订单的 SQL Server 数据库。对于普通订单,单个表提供以下结果:
订单:
ID Customer Shipdate Order ID
-----------------------------------------------------------------
1 Tom 2015-01-01 100
2 Bob 2014-03-20 200
在某些时候,他们需要多个客户下的订单。因此,他们为每个客户创建了一行并将记录拆分为多行。
订单:
ID Customer Shipdate Order ID
-----------------------------------------------------------------
1 Tom 2015-01-01 100
2 Bob 2014-03-20 200
3 John
4 Dan
5 2014-05-10 300
所以我可以加入另一个表来理解这一点,它涉及实际上是一个订单的三行。
联合订单:
ID Related ID
-----------------------------------------------------------------
5 3
5 4
我对 SQL 有点陌生,虽然我可以加入另一个表并过滤以仅获取与 Order ID 300 相关的数据,但我真正想要的是连接客户,但在搜索之后有一段时间我不知道该怎么做。我真正想要实现的是作为输出:
ID Customer Shipdate Order ID
----------------------------------------------------------------
1 Tom 2015-01-01 100
2 Bob 2014-03-20 200
5 John, Dan 2014-05-10 300
【问题讨论】:
-
可怜的你,不得不处理糟糕的桌子设计。您需要使用 GROUP BY 和某种 GROUP_CONCAT(或任何 MS SQL Server 调用它)进行 JOIN。
-
正如@jarlh 提到的,您需要MySQL GROUP_CONCAT 的SQL Server 等效项。不幸的是,该功能不存在。不过这个问题之前有人问过,看这个帖子:stackoverflow.com/questions/451415/…
标签: sql sql-server