簡體   English   中英

合並第一行和第二行,第三行和第四行,依此類推

[英]Merge 1st and Second Row, 3rd and 4th Row and so on

假設我的桌子上有行,

Id  Value
----------
1    a
1    b
1    c
1    d
1    e
1    f

預期結果應該是

Id  Value1   Value2
-------------------
1    a        b
1    c        d
1    e        f

我在這里很困惑。

好的,肯定有一種更簡單的方法可以做到這一點,但這可以起作用:

WITH CTE AS
(
    SELECT  *,
            RN = ROW_NUMBER() OVER(PARTITION BY Id ORDER BY Value)
    FROM dbo.YourTable
)
SELECT  Id,
        MIN(CASE WHEN RN % 2 = 1 THEN Value END) Value1, 
        MIN(CASE WHEN RN % 2 = 0 THEN Value END) Value2
FROM CTE
GROUP BY Id,
         RN - ((RN - 1) % 2);

結果如下:

╔════╦════════╦════════╗
║ Id ║ Value1 ║ Value2 ║
╠════╬════════╬════════╣
║  1 ║ a      ║ b      ║
║  1 ║ c      ║ d      ║
║  1 ║ e      ║ f      ║
╚════╩════════╩════════╝
;WITH cte AS
(
  SELECT *, ROW_NUMBER() OVER (ORDER BY value) AS RowNum
  FROM YourTable
)

SELECT 
    c1.id
  , c1.value as Value1
  , c2.value as Value2
FROM cte c1
LEFT JOIN cte c2 ON c1.rownum = c2.rownum - 1
WHERE c1.RowNum % 2 = 1
select      Id
           ,min(Value)  as Value1
           ,max(Value)  as Value2

from       (select      Id,Value
                       ,(row_number () over 
                            (partition by Id order by Value)+1)/2 as group_id

            from        mytable as t
            ) t

group by    Id      
           ,group_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM