【问题标题】:sql pivot data rows to columnssql 将数据行转换为列
【发布时间】:2014-01-20 18:32:07
【问题描述】:

我有一张类似于下面的表格。它是一个项目表及其相关的 bin 位置。有些可能有多个库位,并且所有库位都有首选或主要库位。如何运行查询以将行转置为列并确定首选 bin 为第一个?

Item   Bin   Preferred
A      2       Yes
A      3       No
A      1       No
B      3       Yes
B      4       No

输出应如下所示:

Item   BinPreferred  Bin2 Bin3
 A     2               3    1
 B     3               4    -

我尝试过使用 PIVOT 功能,但没有成功。

谢谢,

【问题讨论】:

  • 既然你有tsql作为标签,这是SQL Server吗?如果有,是什么版本?
  • Bin3的逻辑是什么?
  • 一件物品可以放入的垃圾箱数量是否有固定限制?还是动态的?
  • 你到底尝试了什么?列出您的PIVOT 代码。

标签: sql sql-server tsql pivot


【解决方案1】:

这应该是一个项目的最大数量为 3 个箱子的情况的解决方案。 如果我是对的,它将选择主箱和其他两个不相等的箱。

Select distinct 
mainbin.item,
mainbin.bin as binpreffered,
bin2.bin as bin2,
bin3.bin as bin3 
from table mainbin  
left join table bin2 on (mainbin.id=bin2.id)
left join table bin3 on (mainbin.id=bin3.id)
where mainbin.preffered='Yes' 
and bin2.preffered='No' 
and bin3.preffered='No'
and bin2.id<>bin3.id;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-08
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 2015-01-19
    • 1970-01-01
    相关资源
    最近更新 更多