2016-03-15 87 views
0

我想创建一个SQL数据透视查询,其中返回结果是产品的名称而不是'0'或'1'值(我正在寻找不同的值)。SQL PIvot返回值而不是计数

这是我的现有的查询:

SELECT * 
FROM 
(select 
EBA_PROJ_STATUS.PROJECT AS PROJECT, 
EBA_PROJ_STATUS.REGION AS REGION, 
EBA_PROJ_STATUS_AIS.ONE_DB_PRODUCT_TYPE AS ONE_DB_PRODUCT_TYPE 
from EBA_PROJ_STATUS EBA_PROJ_STATUS, 
EBA_PROJ_STATUS_AIS EBA_PROJ_STATUS_AIS 
where EBA_PROJ_STATUS_AIS.PROJECT_ID=EBA_PROJ_STATUS.ID 
) 
PIVOT (
COUNT (distinct ONE_DB_PRODUCT_TYPE) FOR (ONE_DB_PRODUCT_TYPE) 
IN ('PROD1' as PROD1, 'PROD2' as PROD2, 'PROD3' as PROD3, 'PROD4' as PROD4, 'PROD4' as PROD5) 
) 

这使每个产品作为标题为PROD1,Prod2的等的值和“0”或“1”返回。有没有办法取0和1,并将其输出为产品字符串?

预先感谢您!

+0

产品字符串,它将与列标题相同?什么零 - 显示那些为空? –

+0

嗨@AlexPoole这是正确的,零应该回来为空。产品字符串与列标题相同。 –

回答

1

你可以只用本身的价值的聚合函数:

... 
PIVOT (
MAX (ONE_DB_PRODUCT_TYPE) FOR (ONE_DB_PRODUCT_TYPE) 
IN ('PROD1' as PROD1, 'PROD2' as PROD2, 'PROD3' as PROD3, 'PROD4' as PROD4, 'PROD4' as PROD5) 
); 

但是,这将让你像一个结果:

PROJECT REGI PROD1 PROD2 PROD3 PROD4 PROD5 
--------- ---- ----- ----- ----- ----- ----- 
Project 1 EMEA  PROD2 PROD3    
Project 2 NA PROD1  PROD3    

这似乎完全没有任何帮助。如果您想显示除空值之外的其他值,而不是现在的零值,则可以将NVL /合并外部值中的值。

+0

非常感谢,只需要MAX值!这正是我需要的数据格式。我有一个数据透视插件,可以为我执行计数功能。 –