1

以下のような形式のテーブルにデータを保存しています。Heading1、heading2 などは列名です。ご覧のとおり、反復データ abcd と 2 つの異なる値があります。2番目の言及として出力を取得できるように、これを照会したいと思います。たとえば、最初の 4 行は見出し 1,2,3,4 で同じなので、出力は abcd 1 1 2 2 3 4 4 5 である必要があります。つまり、すべての重複データをグループ化し、別のデータを 1 行に追加したということです。これは可能ですか?

原点データ

heading1 | heading2 | heading3 | heading4 | heading5 | heading6         
----------------------------------------------------------------------------------------
a | b | c | d | 1 | 1 |         
a | b | c | d | 2 | 2 |         
a | b | c | d | 3 | 4 |         
a | b | c | d | 4 | 5 |         
a | b | d | c | 5 | 5 |         

出力が必要

heading1 | heading2 | heading3 | heading4 | heading5 | heading6 | | |   
----------------------------------------------------------------------------------------    
a | b | c | d | 1 | 1 | 2 | 2 | 3| 4 |  5 

a | b | d | c | 5 | 5 |         
4

1 に答える 1

0

この投稿に基づいて:

DECLARE @TABLE TABLE
(
    heading1 NVARCHAR(1)
    , heading2 NVARCHAR(1)
    , heading3 NVARCHAR(1)
    , heading4 NVARCHAR(1)
    , heading5 NVARCHAR(1)
    , heading6 NVARCHAR(1)
)

INSERT INTO @TABLE
          SELECT 'a', 'b', 'c', 'd', '1', '1'
UNION ALL SELECT 'a', 'b', 'c', 'd', '2', '2'
UNION ALL SELECT 'a', 'b', 'c', 'd', '3', '4'
UNION ALL SELECT 'a', 'b', 'c', 'd', '4', '5'
UNION ALL SELECT 'a', 'b', 'd', 'c', '5', '5'

DECLARE @CONCAT VARCHAR(500)

SELECT heading1, heading2, heading3, heading4
    , cols5and6
FROM @TABLE a
CROSS APPLY
(
    SELECT heading5 + ' | ' + heading6 + ' | '
    FROM @TABLE b
    WHERE a.heading1 = b.heading1
        AND a.heading2 = b.heading2
        AND a.heading3 = b.heading3
        AND a.heading4 = b.heading4
    FOR XML PATH('')
) d (cols5and6)
GROUP BY heading1, heading2, heading3, heading4, cols5and6

出力:

heading1    heading2    heading3    heading4    cols5and6
a   b   c   d   1 | 1 | 2 | 2 | 3 | 4 | 4 | 5 | 
a   b   d   c   5 | 5 | 
于 2012-07-30T19:25:29.497 に答える