[英]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.