【发布时间】:2020-01-23 13:38:33
【问题描述】:
我想实现以下目标,老实说,我什至不知道从哪里开始。我们有两个表,客户和订单。我需要创建第三个表,该表将包含组合数据,并以水平方式显示。
这些是当前的表格:
客户:
Id Email Language
Customer1 1 cust1@email.com en
Customer2 2 cust2@email.com sp
Customer3 3 cust3@email.com ru
订单:
Id CustomerId Total
a 1 200
b 1 300
c 2 400
d 3 500
e 3 500
f 3 500
g 3 500
以及期望的结果:
CustomerID Email Language Order1 Order2 Order3 Order4 Order5 Order6
1 a b - - - -
2 c - - - - -
3 d e f g - -
每个客户最多可以有 6 个有效订单,但逻辑也可以是每个客户只列出 6 个第一个订单。 有关如何实现此结果的任何建议?对你的帮助表示感谢。
【问题讨论】:
-
预期输出中的所有内容都来自订单表。我不确定您所说的“组合”是什么意思。
-
抱歉,这只是一个简化 - 让我在 OUTPUT 表中添加更多内容。
-
@StringTheory 如果这一切都在一个表中,哪个 SQL 函数可以让我得到想要的结果?
-
一旦你加入这两个表(你也可以在之后这样做),你可以使用
case语句,但将它们包裹在max周围,这样你就可以得到每个客户 ID 一行。不要忘记使用group by。您应该首先尝试不使用max来了解您为什么需要它。这里有一些帮助techslides.com/…
标签: sql sql-server sql-server-2005