久久久久久久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)
主站蜘蛛池模板: 精品av| 国产一区二区三区四区在线观看 | 国产一区二区三区免费 | 中文在线播放 | 69亚洲精品 | 亚洲日本一区二区三区四区 | 国产高清在线精品一区二区三区 | 97国产精品 | 国产超碰人人爽人人做人人爱 | 天天干免费视频 | 99色在线视频 | 中文字幕在线视频观看 | 日韩一级二级片 | 免费在线国产视频 | 日日干天天操 | 亚洲国产激情 | 日韩精品人成在线播放 | 爱操影视 | 成人在线观看免费 | 亚洲男人的天堂网站 | 亚洲午夜精品久久久久久app | 成人精品一区二区三区四区 | 91精品国产综合久久久动漫日韩 | 黑人精品欧美一区二区蜜桃 | 浮生影院免费观看中文版 | 欧美午夜精品理论片a级按摩 | 国产91视频一区二区 | 亚洲精品在线看 | a级片在线 | 一区二区不卡高清 | 欧美成人精品一区二区男人看 | 国产最新视频在线 | 在线观看国产视频 | 国产美女自拍视频 | 91免费电影 | 欧美日本免费 | 在线视频 欧美日韩 | 色就是色欧美 | 中文字幕a√ | 日本久久久久久久久 | 亚洲欧美激情视频 |