SQL将行转换为列标题,没有值行

时间:2017-01-05 08:16:55

标签: sql-server excel-formula

我有一个由三个字段组成的表[dTaxCode]

TaxCodeId, TaxCodeName ,DataAreaid

我需要在DataAreaId上使用过滤器转换的行和作为标头的TaxCodeId。

像:

SELECT TaxCodeId FROM dTaxCode where DataAreaId = 'xxx'

预期结果:

Tax1, Tax3, Tax4, ....

这是从excel调用的存储过程所需要的,以获取值作为列标题,作为回报将作为CUBEMEMBER公式的输入。

我试过了pivot,xml等等,没有运气。

BR / Jan

1 个答案:

答案 0 :(得分:0)

来自您的问题架构

CREATE TABLE #dTaxCode (
    TaxCodeId VARCHAR(20)
    ,TaxCodeName VARCHAR(20)
    ,DataAreaid VARCHAR(3)
    )

INSERT INTO #dTaxCode

SELECT 'Tax1'   ,'ABC'  ,'XXX'
UNION ALL
SELECT 'Tax2'   ,'BCD'  ,'YYY'
UNION ALL
SELECT 'Tax3'   ,'CDE'  ,'XXX'

UNION ALL

SELECT 'Tax4'
    ,'DEF'
    ,'XXX'

查询将是

SELECT STUFF((
            SELECT ',' + TaxCodeId
            FROM #dTaxCode
            WHERE DataAreaid = 'XXX'
            FOR XML PATH('')
            ), 1, 1, '') AS TaxCodeId