久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

五列到一行

Five Columns to a single row(五列到一行)
本文介紹了五列到一行的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我有以下數據

+--------+|訂單|+--------+|S1 ||S2 ||S3 ||S4 ||S5 ||S6 ||S7 ||S8 ||S9 ||S10 ||S11 ||S12 |+--------+

我需要按如下方式返回結果 - 一列包含五行:

+-----------------+|訂單 |+---+|S1,S2,S3,S4,S5 ||S6,S7,S8,S9,S10 ||S11,S12 |+---+

沒有什么可以分組或分隔成行的.所以我分配了一個row_number并對row_number做了mod 5.它幾乎有效,但不完全.

這是我嘗試過的:

;用 mycte 作為 (選擇'S1' 作為訂單聯合全選'S2'聯合全選'S3'聯合全選'S4'聯合全選'S5'聯合全選'S6'聯合全選'S7'聯合全選'S8'聯合全選'S9'聯合全選'S10'聯合全選'S11'聯合全選'S12'),mycte2 為 (選擇訂單,ROW_NUMBER() over(order by orders) %5 作為 rownum來自mycte)選擇不同的東西((SELECT ',' + mycte2.orders從 mycte2其中 t1.rownum=mycte2.rownumFOR XML 路徑('')), 1, 1, '') 訂單, 行數來自 mycte2 t1

結果是:

+-----------+--------+|訂單|行數 |+-----------+--------+|S1,S3,S8 |1 ||S10,S4,S9 |2 ||S11,S5 |3 ||S12,S6 |4 ||S2,S7 |0 |+-----------+--------+

有人可以告訴我如何達到我想要的結果嗎?

解決方案

怎么樣

創建表T([訂單] varchar(3));插入 T([訂單])價值觀('S1'),('S2'),('S3'),('S4'),('S5'),('S6'),('S7'),('S8'),('S9'),('S10'),('S11'),('S12');使用 CTE 作為(選擇訂單,(ROW_NUMBER() OVER(ORDER BY LEN(Orders)) - 1)/5 RN從T)SELECT STRING_AGG(訂單, ',')從 CTE按RN分組RN 的命令;

SELECT STUFF((SELECT ',' + 訂單從 CTE哪里 RN = TT.RNFOR XML 路徑('')), 1, 1, '') 訂單從 CTE TT按RN分組RN 的命令;

<塊引用>

您可以使用 (SELECT 1) 而不是 LEN(Orders)

退貨:

+-----------------+|訂單 |+---+|S1,S2,S3,S4,S5 ||S6,S7,S8,S9,S10 ||S11,S12 |+---+

演示

I have the following data

+--------+
| orders |
+--------+
| S1     |
| S2     |
| S3     |
| S4     |
| S5     |
| S6     |
| S7     |
| S8     |
| S9     |
| S10    |
| S11    |
| S12    |
+--------+

I am required to return the result as follows - fit five rows in one column:

+-----------------+
|     Orders      |
+-----------------+
| S1,S2,S3,S4,S5  |
| S6,S7,S8,S9,S10 |
| S11,S12         |
+-----------------+

There is nothing to group on or segregate these into rows. So I assigned a row_number and did mod 5 on the row_number. It almost works, but not quite.

Here is what I have tried:

;with mycte as (
select
'S1' as orders
union all select
'S2'
union all select
'S3'
union all select
'S4'
union all select
'S5'
union all select
'S6'
union all select
'S7'
union all select
'S8'
union all select
'S9'
union all select
'S10'
union all select
'S11'
union all select
'S12'
)
,mycte2 as (
Select 
orders
,ROW_NUMBER() over( order by orders) %5 as rownum 
from mycte
)
select distinct
 STUFF((
            SELECT ',' + mycte2.orders
            FROM mycte2
            where t1.rownum= mycte2.rownum
            FOR XML PATH('')
            ), 1, 1, '') orders 
, rownum
 from mycte2 t1

the result is :

+-----------+--------+
|  orders   | rownum |
+-----------+--------+
| S1,S3,S8  |      1 |
| S10,S4,S9 |      2 |
| S11,S5    |      3 |
| S12,S6    |      4 |
| S2,S7     |      0 |
+-----------+--------+

Can someone please show me how to get to my desired result?

解決方案

How about

CREATE TABLE T
    ([orders] varchar(3));

INSERT INTO T
    ([orders])
VALUES
    ('S1'),
    ('S2'),
    ('S3'),
    ('S4'),
    ('S5'),
    ('S6'),
    ('S7'),
    ('S8'),
    ('S9'),
    ('S10'),
    ('S11'),
    ('S12');

WITH CTE AS
(
  SELECT Orders,
        (ROW_NUMBER() OVER(ORDER BY LEN(Orders)) - 1) / 5 RN
  FROM T
)
SELECT STRING_AGG(Orders, ',')
FROM CTE
GROUP BY RN
ORDER BY RN;

OR

SELECT STUFF(
              (
                SELECT ',' + Orders
                FROM CTE
                WHERE RN = TT.RN
                FOR XML PATH('')
              ), 1, 1, ''
            ) Orders
FROM CTE TT
GROUP BY RN
ORDER BY RN;

You can use (SELECT 1) instead of LEN(Orders)

Returns:

+-----------------+
|     Orders      |
+-----------------+
| S1,S2,S3,S4,S5  |
| S6,S7,S8,S9,S10 |
| S11,S12         |
+-----------------+

Demo

這篇關于五列到一行的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Modify Existing decimal places info(修改現有小數位信息)
The correlation name #39;CONVERT#39; is specified multiple times(多次指定相關名稱“CONVERT)
T-SQL left join not returning null columns(T-SQL 左連接不返回空列)
remove duplicates from comma or pipeline operator string(從逗號或管道運算符字符串中刪除重復項)
Change an iterative query to a relational set-based query(將迭代查詢更改為基于關系集的查詢)
concatenate a zero onto sql server select value shows 4 digits still and not 5(將零連接到 sql server 選擇值仍然顯示 4 位而不是 5)
主站蜘蛛池模板: 国产视频1区 | 久久爱黑人激情av摘花 | 欧美精品日韩 | 欧美成人视屏 | 欧美精品一区二区三区四区 | 国产激情视频网站 | 精品久久99 | 欧美黄色性生活视频 | 狠狠综合久久av一区二区小说 | 国产欧美日韩一区 | 欧美综合一区 | 视频一区二区在线观看 | 在线观看a视频 | 69亚洲精品| 99国内精品久久久久久久 | 欧美成人精品欧美一级 | 日韩精品在线看 | 国产做a爱片久久毛片 | 亚洲九色| 亚洲电影第三页 | 中文字幕国产日韩 | hsck成人网| 天天拍天天操 | 日韩一区二区三区在线播放 | 一区二区三区不卡视频 | 精品久久久久久久久久久 | 超碰在线播| 欧美日韩a | 欧美午夜精品久久久久久浪潮 | av日韩高清| 天天天堂 | 中文字幕在线精品 | 夜夜爽99久久国产综合精品女不卡 | 狠狠久| 亚洲日日夜夜 | 欧美黑人国产人伦爽爽爽 | 中文在线一区 | 亚洲欧美日韩精品久久亚洲区 | 欧美 日韩 国产 在线 | 亚洲国产精品久久久久婷婷老年 | 成人激情视频免费观看 |