簡體   English   中英

轉置 SQL 中的一列數據

[英]Transposing a column of data in SQL

在 SQL 我的數據 output 是

協議編號 產品狀態
125 一個
125 C
125 ñ

我想看到這個而不是

協議編號 產品狀態
125 A,C, N

或者

協議編號 產品狀態1 產品狀態2 產品狀態3
125 一個 C ñ

我嘗試了一些簡單的樞軸,但值 a、c & n 每次都可以是不同的隨機值。 任何人都可以幫忙嗎?

您可以使用 group_concat function。 您的查詢將是這樣的

SELECT agreement_id, group_concat(Product_Status)
FrOM mytable
group by agreement_id

這適用於 MySQL,對於其他數據庫,您可以為該特定數據庫搜索 group_concat 替代 function。 好像您是數據庫新手。 您可以使用此參考來了解更多信息。 https://www.mysqltutorial.org/basic-mysql-tutorial.aspx

如果您可以使用條件聚合在不同的列中獲取三個值:

select agreementid,
       max(case when seqnum = 1 then ProductStatus end) as ProductStatus_1,
       max(case when seqnum = 2 then ProductStatus end) as ProductStatus_2,
       max(case when seqnum = 3 then ProductStatus end) as ProductStatus_3
from (select t.*,
             row_number() over (partition by agreementid order by agreementid) as seqnum
      from t
     ) t
group by agreementid;

用於創建列表的 SQL 標准是:

select agreementid,
       list_agg(ProductStatus, ',') within group (order by productstatus) as productstatuses
from t
group by agreementid;

許多數據庫對此 function 有不同的名稱。

在這兩種情況下,列表的列或元素的順序是不確定的。 SQL 表表示無序集(嗯,技術上是多集),因此除非列指定排序,否則沒有排序。

暫無
暫無

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

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