【问题标题】:Multiple rows join多行连接
【发布时间】:2017-02-17 08:13:09
【问题描述】:

请帮我解决下一个问题。 我有下一张桌子:

|  Name  |  Size  |  DateTime    |
|--------|--------|--------------| 
| Adi    |  120   |  2017-01-26  |
|--------|--------|--------------|
| Mark   | 225    | 2017-01-11   |
|--------|--------|--------------|
| Adi    | 150    | 2017-01-28   |
|--------|--------|--------------|
| Adi    | 115    | 2017-02-01   |
|--------|--------|--------------|
| Adi    | 170    | 2017-02-05   |
|--------|--------|--------------|

我需要再添加一列,其中包含每个名称的所有注册(如果存在),按 DateTime 列排序,如下所示:

| Name   | Size1 | Size2 | Size3 | 
|--------|-------|-------|-------| 
| Adi    | 120   | 150   | 115   | 
|--------|-------|-------|-------| 

我试过了:

SELECT DISTINCT table.Name, table.Size
FROM database.table AS table
JOIN database.table AS table1
ON table.Name = table.Name

感谢您的帮助!

【问题讨论】:

  • 不清楚你在问什么。在查询中添加一列还不够?您是否缺少行(使用 LEFT JOIN)。
  • 我需要再添加一列,其中包含每个名称的所有注册(如果存在),按 DateTime 列排序

标签: sql-server join multiple-join-rows


【解决方案1】:

按您希望唯一的列分组。 min() 之类的聚合函数适用于每个唯一组,而不是整个结果集

select name, 
       min(size) as size1, 
       max(size) as size2
from your_table
group by name
having min(size) <> max(size)

【讨论】:

  • 感谢您的回复,但我需要按日期订购。并且可能有 5 或 15 个相同名称但不同日期的条目
  • 请更新您的问题。添加您的真实需求
猜你喜欢
  • 1970-01-01
  • 2013-11-04
  • 2017-09-24
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
  • 2016-01-04
  • 2019-07-08
相关资源
最近更新 更多