-1

テーブルがあり、2つの形式でレコードを出力したいと思います。

最初の出力では、テーブルの行を画像に表示されている左右のグループとして表示します。2番目の出力では、行を1つ左と1つ右に配置します。

SQLServerを使用しています。

説明1

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ピボットを試しましたが、成功しませんでした。

4

1 に答える 1

2

T-SQLでこのようなことを行う必要がある場合、これはそれを行う1つの方法です...

----------------------------
--  Display 1
----------------------------
DECLARE @ColBreak INT = 5
;WITH MyTable (SrNo, ItemNo, Qty) AS
(
    SELECT 1, 'A1', 150 UNION ALL
    SELECT 2, 'A2', 100 UNION ALL
    SELECT 3, 'A3', 300 UNION ALL
    SELECT 4, 'A4', 150 UNION ALL
    SELECT 5, 'A5', 100 UNION ALL
    SELECT 6, 'A6', 300 UNION ALL
    SELECT 7, 'A7', 150 UNION ALL
    SELECT 8, 'A8', 100 UNION ALL
    SELECT 9, 'A9', 300 UNION ALL
    SELECT 10, 'A10', 150
)
,Column1 AS
(
    SELECT *
    FROM MyTable T1
    WHERE SrNo  <= @ColBreak
)
,Column2 AS
(
    SELECT *
    FROM MyTable T1
    WHERE SrNo  > @ColBreak
)
SELECT *
FROM Column1 T1
JOIN Column2 T2 ON T1.SrNo + @ColBreak = T2.SrNo

----------------------------
--  Display 2
----------------------------

;WITH MyTable (SrNo, ItemNo, Qty) AS
(
    SELECT 1, 'A1', 150 UNION ALL
    SELECT 2, 'A2', 100 UNION ALL
    SELECT 3, 'A3', 300 UNION ALL
    SELECT 4, 'A4', 150 UNION ALL
    SELECT 5, 'A5', 100 UNION ALL
    SELECT 6, 'A6', 300 UNION ALL
    SELECT 7, 'A7', 150 UNION ALL
    SELECT 8, 'A8', 100 UNION ALL
    SELECT 9, 'A9', 300 UNION ALL
    SELECT 10, 'A10', 150
)
SELECT *
FROM MyTable T1
JOIN MyTable T2 ON T1.SrNo + 1 = T2.SrNo
WHERE T1.SrNo % 2 != 0
于 2013-01-11T07:27:07.053 に答える