如何在列中搜索值并使用pivot将它们设为列

时间:2018-02-26 09:20:14

标签: sql sql-server tsql pivot

select 
     distinct state,sector,
             pt.RSGHDPE as [PPC],pt.OPC43HDPE as [OPC43],
             pt.OPC53HDPE as [OPC53],pt.RSFHDPE as [RSF]
from RMCL_DESPSUM_This_year as t
pivot (min(t.factory) for t.item_name in( RSGHDPE,OPC53HDPE,OPC43HDPE,RSFHDPE)) as pt
where inv_Date between'2017-04-01 00:00:00.000'and getdate()
order by state

我从物品代码中给出了一个值为RSGHDPE的值,但是我有6个项目,其中RSG也是以其他项目名称开头的

我正在寻找的是一种或任何其他方法

pivot (min(t.factory) for t.item_name like( 'RSG%','OPC53%','OPC43%','RSF%')) as pt

1 个答案:

答案 0 :(得分:1)

由于您正在寻找少数item_names,因此您可以使用一些条件聚合方法。

SELECT  
        state, sector,
        MIN(CASE WHEN item_name LIKE 'RSG%' THEN factory END) PPC,
        ...
        MIN(CASE WHEN item_name LIKE 'RSF%' THEN factory END) RSF
FROM RMCL_DESPSUM_This_year as t
WHERE inv_Date between @start AND @end
GROUP BY state,sector