Sql 将单行的值显示为多列

Sql 将单行的值显示为多列,sql,Sql,我需要创建sql,它将列出具有相同工厂的配对 有三张桌子 Plant_Table -------------- Snum Plant cost A Rose 5.00 B Willow 6.00 C Lilly 7.00 Landscaper_Table ---------------- Lnum Lname Laddress 1 Dr Plant xxx s

我需要创建sql,它将列出具有相同工厂的配对

有三张桌子

Plant_Table
--------------
Snum     Plant    cost
  A      Rose      5.00
  B      Willow    6.00
  C      Lilly     7.00

Landscaper_Table
----------------
Lnum    Lname           Laddress
  1      Dr Plant         xxx st
  2      Plant Scaper     zzz st 
  3      George Gardener  yyy st

land_plant_Table
---------------
Lnum    Snum    instock
  1      A         3
  2      A         3
  2      B         3
  2      C         3
  3      A         3
  3      C         3
我需要列出几对承包商,以及那些库存相同的承包商的物资名称

我想要的结果的一个例子是

Landscaper1    Landscaper2       Landscaper 3          Plant
  Dr plant      George Gardener     Plant Scaper           Rose
  Plant Scaper  George Gardener      ---                  Lilly

我怎样才能做到这一点呢?

据我所知,不可能成对显示……下面的答案建议将一个文件打印成两列

只需基于
Lnum
Lnum
land\u plant\u表
plant\u表
连接,并使用
where
子句中的供应品过滤掉即可

这样做就可以了(基于更新之前的上一个表模式!)

通过连接

select lt.lname, pt.plant
from plant_table pt 
inner join land_plant_Table lpt on lpt. snum = ct.snum 
inner join Landscaper_Table lt on lpt.lnum = lt.lnum
where pt.plant='rose' /* or pt.plant IN ('rose','willow','blah','blah','blah' )*/
通过子查询:

首先获取
snum
->->然后基于snum,获取
lnum
->基于lnum,获取
lname

select lname from Landscaper_table where lnum in ( 
    select lnum from land_plant_table where lnum in (
           select snum from plant_table where plant IN ('rose','willow','blah','blah','blah' )
)

因为您没有提到数据库,所以我使用sql server解决了它

select plant,
max(case when row='1' then name end) L1,
max(case when row='2' then name end) L2,
max(case when row='3' then name end) L3
from 
(
select lt.lname as name, pt.plant as plant, 
  row_number() over(partition by pt.plant order by pt.plant) as row
from plant_table pt 
inner join land_plant_Table lpt on lpt. snum = pt.snum 
inner join Landscaper_Table lt on lpt.lnum = lt.lnum
) as s
group by plant

请正确描述模式。举例说明您想要的结果。举例说明我想要的结果是contractor 1 contractor 2 Supplies Cname Cname Supply name,其中两个承包商名称不同。对不起,我还不知道如何在这里正确地格式化。你能给出一些示例数据和预期结果吗。请编辑您的问题(编辑链接位于标签下方的左下角),因为您可能希望使用
{}
按钮格式化这些数据,以便向我们显示一个表,这在注释中是不可能做到的。