首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一对多连接在CASE语句的情况下创建重复项

一对多连接在CASE语句的情况下创建重复项
EN

Stack Overflow用户
提问于 2017-12-14 01:51:45
回答 1查看 176关注 0票数 0

我尝试过搜索,但可能缺乏找到类似帖子的语言,所以这是我的基本问题

(SQL Server 2016)...

我有一个查询,可以识别唯一的客户遇到(1 line per 1 transaction)。然后我试着把顾客从另一张桌子上买的东西拉进来。如果他们购买了多个商品,则加入表会多次列出该交易,并使用一个名为"Line“的字段来指示这些商品的排名。

表2:

代码语言:javascript
复制
Transaction--Line--Item

1000--1--Staples

1000--2--Stapler

1001--1--Paper

我希望我的查询的最终结果是:表1:

代码语言:javascript
复制
Customer--Transaction--Item1--Item2

John Doe--1000--Staples--Stapler

Jane Smith--1001--Paper--NULL

我目前正尝试在我的SELECT中使用CASE语句来实现这一点

代码语言:javascript
复制
SELECT Table1.Customer,

Table1.Transaction,

CASE    WHEN Table2.LINE = 1 THEN Table2.Item
                ELSE NULL
                END as Item1

CASE    WHEN Table2.LINE = 2 THEN Table2.Item
                ELSE NULL
                END as Item2

FROM Table1 left outer join Table2 on Table1.transaction=Table2.transaction

这会产生正确的结果,除了一对多连接将这些结果放在重复行上之外

代码语言:javascript
复制
John Doe--1000--Staples--NULL

John Doe--1000--NULL--Stapler

Jane Smith--10001--Paper--NULL

我希望John Doe都在一行上。除了在初始查询之后运行两个单独的update语句之外,我不知道如何获得我想要的结果。帮助?

(对糟糕的格式表示歉意)

EN

回答 1

Stack Overflow用户

发布于 2017-12-14 03:52:56

下面应该可以。假设在Table2中至少会有一个条目

代码语言:javascript
复制
SELECT Table1.Customer,
Table1.Transaction,
t1.Item AS Item1,
t2.Item as Item2
FROM Table1 
INNER JOIN Table2 t1
   on c.transactions=t1.tid
left outer join Table2 t2 
   on Table1.transaction=t2.transaction AND t2.Line=2
where t1.line=1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47799364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档