【问题标题】:How can I join the same table to bring me one result?我怎样才能加入同一张桌子给我带来一个结果?
【发布时间】:2017-10-17 17:48:23
【问题描述】:

我想创建一个查询而不是给我以下结果:

Product | attibutname | attibutname      | Value |
   5547 | Lacoste     | Enable / Disable | 20
   5548 | Vans        | Enable / Disable | 10   

表格是这样的:

id | Product | Attributname     | value
 1 |    5547 | Brand            | Lacoste
 2 |    5547 | Woman /Mens      | 1
 3 |    5547 | Enable / Disable | 20
 4 |    5548 |  Brand           | Vans
 2 |    5548 | Woman /Mens      | 0
 3 |    5548 | Enable / Disable | 10

`

【问题讨论】:

  • 这是一个 PIVOT 或 UNPIVOT 操作 - 但您的表中没有足够的数据来正确决定哪些值进入哪些列..
  • 首先您需要确定您使用的是哪个 DBMS。答案可能与这两种产品大不相同。
  • 我猜这并不是你想要的结果。
  • 假设你正在使用 |指示列分隔您的样本数据有点挑战,因为第 4 行的列比其他行多。这可能是一个很好的起点。 spaghettidba.com/2015/04/24/…
  • 我有一个真实的表,而不是看起来像它来自 Microsft Dynamic AX 的示例。所以我想做的事情是基于产品并为我带来品牌和价值。

标签: mysql sql sql-server


【解决方案1】:

以下内容是您如何将表连接到自身(根据您提供的内容进行假设)。您需要为每个副本设置别名,以便知道您是在谈论品牌还是表格的不同属性行。

Select b.Product, b.value [Attributename1], g.Attributename, g.value 
  from myItemTable b 
  join myItemTable g ON g.id = b.id 
 Where b.Attributename = 'Brand'
   and g.Attributename = 'Enable / Disable'

【讨论】:

  • 我的答案被否决没有问题,请告诉我原因。据我所知,你只是为了获得徽章而投票。
猜你喜欢
  • 2011-04-07
  • 1970-01-01
  • 2021-10-10
  • 2021-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
相关资源
最近更新 更多