【发布时间】:2018-02-08 06:53:00
【问题描述】:
我需要使用 Join 或其他方式从表中的两行中提取一行。我有三个表 Account、Account_Perm 和 User。 Account 表有一个名为 AccountNum 的字段,Account_Perm 有 AccountNum、TeamRole 和 UserName 的字段,User 表有用户名。示例数据如下。
- Account ==> AccountNum = 1234, 5678
- Account_Perm ==> AccountNum = 1234,TeamRole=TeamA; AccountNum = 1234,TeamRole=TeamB
- 用户 ==> TeamRole=TeamA,用户名=John Smith; TeamRole=TeamB, UserName = "Casey Brown"。
我需要使用这些表格,我的结果集与列(AccountNum、TeamRole、TeamRole)应如下所示。
1234, John Smith, Casey Brown
通过使用 Join,我可以获得两行,分别为 1234,John Smith 和 1234,Casey Brown。但是,我需要单个记录中的 AccountNum、TeamA 的用户名和 TeamB 的用户名。
有人可以帮忙吗?
查询:
SELECT
A.AccountNum,
A.TeamRole,
U.Name
FROM
Account A,
Account_Perm AA,
User U
WHERE
A.AccountNum = AA.AccountNum
AND AA.TeamRole IN ('TeamA', 'TeamB')
AND AA.UserName = U.Name;
【问题讨论】:
-
By using Join...请包括您当前的查询。您的数据很难阅读和理解。 -
Select A.AccountNum, A.TeamRole, U.Name from Account A, Account_Perm AA, User U WHERE A.AccountNum = AA.AccountNum AND AA.TeamRole IN ('TeamA' , 'TeamB') AND AA.UserName = U.Name -
您的数据和问题不清楚,我什至无法猜测答案。执行以下操作:编辑您的问题以表格格式显示示例数据,就像 SQL 查询将返回一样,然后 2) 显示包含所需结果的示例输出表。你应该意识到,如果你一开始就这样做了,你可能已经有了答案。
-
该查询不会得到您预期的结果。您想要两个用户名,但正在查询用户名和团队角色?
-
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(25 年前!),不鼓励使用它
标签: sql-server join