2

私はこのようなテーブルを持っています

OutputTablesID    Label    ColumnOrder
  236             text          1
  236             text          2
  236             text          3
   .                .           .
   .                .           .
   .                .           . 
  236             text         25

私はこのように見えるテーブルが必要です

OutputTablesID   1>>2>>3>>4>>5>>6>>7>>8>>9>>10>>11>>12>>13>>14>>15

 236>>>>>>>>>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text

既存のピボットテーブルから使用したコードを試しましたが、テキスト文字列であるため、集計関数でLabelを使用できません。

これはピボットテーブルでの私の試みです

 Create  FUNCTION [dbo].[ColOrder] 
(   
)

RETURNS TABLE 

AS

RETURN 

(
   SELECT     OutputTablesId, Label, 1,2,3,4,5,6,7,8,9,10,11,12
    from 
    (
       SELECT OCL.Label, OCL.OutputTablesId
       FROM OCL
    ) AS D
    PIVOT 
    (
        sum(Label) 
        FOR ColumnOrder IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])
    ) AS P

コメントや提案ありがとうございます!

4

1 に答える 1

2

あなたのコードは非常に近いですが、動作しないsum()onを使用しようとしていますvarchar。集計関数を次のように変更すると、機能するmax()はずです。

select OutputTablesID, [1], [2], [3], [25]
from
(
  select OutputTablesID, Label, ColumnOrder
  from yourtable
) src
pivot
(
  max(label)
  for ColumnOrder in ([1], [2], [3], [25]) -- put other ColumnOrder values here
) piv

デモで SQL Fiddle を参照してください

これを関数として作成する場合は、次を使用できます。

create function dbo.colorder()
returns table
as
return
select OutputTablesID, [1], [2], [3], [25]
from
(
  select OutputTablesID, Label, ColumnOrder
  from yourtable
) src
pivot
(
  max(label)
  for ColumnOrder in ([1], [2], [3], [25])  -- put other ColumnOrder values here
) piv

デモで SQL Fiddle を参照してください

結果は次のとおりです。

| OUTPUTTABLESID |    1 |    2 |    3 |   25 |
----------------------------------------------
|            236 | text | text | text | text |
于 2013-02-05T16:30:21.120 に答える