如何以列方式显示sql行数据

如何以列方式显示sql行数据,sql,sql-server,tsql,pivot,Sql,Sql Server,Tsql,Pivot,我有一个示例名称表,其中包含以下列firmnesssID、SampleTestingID和Firmness: 现在,我需要像下图一样显示输出。我假设一个特定的SampleTestingID最多有40条记录,我想在列标题下显示硬度值,比如1a 1b 2a 2b 3a 3b。。。20a 20b 40列,用于每个不同的SampleTestingID 我还试图通过数据透视来实现同样的效果,但我无法获得所需的输出。以下是我所做的: SELECT P.SampleTestingId, IsNull(P.[1

我有一个示例名称表,其中包含以下列firmnesssID、SampleTestingID和Firmness:

现在,我需要像下图一样显示输出。我假设一个特定的SampleTestingID最多有40条记录,我想在列标题下显示硬度值,比如1a 1b 2a 2b 3a 3b。。。20a 20b 40列,用于每个不同的SampleTestingID

我还试图通过数据透视来实现同样的效果,但我无法获得所需的输出。以下是我所做的:

SELECT P.SampleTestingId, IsNull(P.[1], 0) as Wk1, IsNull(P.[2], 0) as Wk2
    , IsNull(P.[3], 0) as Wk3, IsNull(P.[4], 0) as Wk4
    , IsNull(P.[5], 0) as Wk5, IsNull(P.[6], 0) as Wk6
    , IsNull(P.[7], 0) as Wk7, IsNull(P.[8], 0) as Wk8
    , IsNull(P.[9], 0) as Wk9
FROM
(
    SELECT SampleTestingId, Firmness,[FirmnessID]
    FROM dbo.ftatestdata  WHERE SampletestingId=243 AND Isdeleted=0
) I
PIVOT
(
    SUM([FirmnessID])
    FOR [Firmness] IN ([1], [2], [3], [4], [5], [6], [7], [8], [9])
) as P


不知怎的,我用这个实现了同样的目标

 SELECT SampleTestingId, IsNull([1], 0) as '1a', IsNull([2], 0) as '1b'
        , IsNull([3], 0) as '2a', IsNull([4], 0) as '2b'
        , IsNull([5], 0) as '3a', IsNull([6], 0) as '3b'
        , IsNull([7], 0) as '4a', IsNull([8], 0) as '4b'
        , IsNull([9], 0) as '5a' ,IsNull([10], 0) as '5b'
        , IsNull([11], 0) as '6a', IsNull([12], 0) as '6b'
        , IsNull([13], 0) as '7a' ,IsNull([14], 0) as '7b'
        , IsNull([15], 0) as '8a', IsNull([16], 0) as '8b'
        , IsNull([17], 0) as '9a' ,IsNull([18], 0) as '9b'
        , IsNull([19], 0) as '10a', IsNull([20], 0) as '10b'
        , IsNull([21], 0) as '11a', IsNull([22], 0) as '11b'
        , IsNull([23], 0) as '12a', IsNull([24], 0) as '12b'
        , IsNull([25], 0) as '13a', IsNull([26], 0) as '13b'
        , IsNull([27], 0) as '14a', IsNull([28], 0) as '14b'
        , IsNull([29], 0) as '15a' ,IsNull([30], 0) as '15b'
        , IsNull([31], 0) as '16a', IsNull([32], 0) as '16b'
        , IsNull([33], 0) as '17a' ,IsNull([34], 0) as '17b'
        , IsNull([35], 0) as '18a', IsNull([36], 0) as '18b'
        , IsNull([37], 0) as '19a' ,IsNull([38], 0) as '19b'
        , IsNull([39], 0) as '20a', IsNull([40], 0) as '20b'  

        FROM(
        SELECT SampleTestingID,r_id,Firmness FROM (
            SELECT * ,ROW_NUMBER() OVER (PARTITION BY SampleTestingID ORDER BY SampleTestingID) as r_id
            FROM FTATestData) AS a WHERE r_id<=40
        )AS P
    PIVOT(
        MAX(Firmness) FOR r_id in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40])
    )AS Pvt
搜索pivot查询有数百个。。。。甚至到处都有数以千计的例子:可能重复的
 SELECT SampleTestingId, IsNull([1], 0) as '1a', IsNull([2], 0) as '1b'
        , IsNull([3], 0) as '2a', IsNull([4], 0) as '2b'
        , IsNull([5], 0) as '3a', IsNull([6], 0) as '3b'
        , IsNull([7], 0) as '4a', IsNull([8], 0) as '4b'
        , IsNull([9], 0) as '5a' ,IsNull([10], 0) as '5b'
        , IsNull([11], 0) as '6a', IsNull([12], 0) as '6b'
        , IsNull([13], 0) as '7a' ,IsNull([14], 0) as '7b'
        , IsNull([15], 0) as '8a', IsNull([16], 0) as '8b'
        , IsNull([17], 0) as '9a' ,IsNull([18], 0) as '9b'
        , IsNull([19], 0) as '10a', IsNull([20], 0) as '10b'
        , IsNull([21], 0) as '11a', IsNull([22], 0) as '11b'
        , IsNull([23], 0) as '12a', IsNull([24], 0) as '12b'
        , IsNull([25], 0) as '13a', IsNull([26], 0) as '13b'
        , IsNull([27], 0) as '14a', IsNull([28], 0) as '14b'
        , IsNull([29], 0) as '15a' ,IsNull([30], 0) as '15b'
        , IsNull([31], 0) as '16a', IsNull([32], 0) as '16b'
        , IsNull([33], 0) as '17a' ,IsNull([34], 0) as '17b'
        , IsNull([35], 0) as '18a', IsNull([36], 0) as '18b'
        , IsNull([37], 0) as '19a' ,IsNull([38], 0) as '19b'
        , IsNull([39], 0) as '20a', IsNull([40], 0) as '20b'  

        FROM(
        SELECT SampleTestingID,r_id,Firmness FROM (
            SELECT * ,ROW_NUMBER() OVER (PARTITION BY SampleTestingID ORDER BY SampleTestingID) as r_id
            FROM FTATestData) AS a WHERE r_id<=40
        )AS P
    PIVOT(
        MAX(Firmness) FOR r_id in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40])
    )AS Pvt