在 SQL Server 中將多行值與同一列組合的最有效方法是什么?
資料表
| 類別 | 部分 | 支付 |
|---|---|---|
| 01 | 一種 | 1425 |
| 01 | 乙 | 7647 |
| 01 | 一種 | 6164 |
| 01 | 乙 | 3241 |
我正在努力實作以下結果
| 類別 | 部分 | 支付 |
|---|---|---|
| 01 | 一種 | 1425 6164 |
| 01 | 乙 | 7647 3241 |
當類別和段相同時,我想合并行。
提前致謝!
uj5u.com熱心網友回復:
用這個
SELECT category,segment,payment = STUFF((
SELECT ' ' CONVERT(VARCHAR,payment)
FROM TABLENAME t
WHERE t.category = TABLENAME.category AND t.segment = TABLENAME.segment
FOR XML PATH('')
), 1, 1, '')
FROM TABLENAME
GROUP BY category,segment
如果您使用 號付款,請使用這樣的東西。
SELECT category,segment,SUM(payment) as payment
FROM TABLENAME
GROUP BY category,segment
如果你想要總和然后洗掉東西并Sum(payment)只使用。
uj5u.com熱心網友回復:
您可以將 SUM 聚合函式與 GROUP BY 子句一起使用,如下所示:
SELECT category, segment, SUM(payment) AS 'payment'
FROM table
GROUP BY category, segment
uj5u.com熱心網友回復:
如果您想要實際總數,則可以匯總和匯總:
select category, segment, sum(payment)
from table
group by category, segment
如果你想要字串,你可以嘗試這樣的事情(對于 mysql):
select category, segment, GROUP_CONCAT(payment SEPARATOR ' ')
from table
group by category, segment
uj5u.com熱心網友回復:
你的桌子
declare @t TABLE (
category int NOT NULL
,segment NVARCHAR(50) NOT NULL
,payment int NOT NULL
);
INSERT INTO @t(category,segment,payment) VALUES (01,'A',1425);
INSERT INTO @t(category,segment,payment) VALUES (01,'B',7647);
INSERT INTO @t(category,segment,payment) VALUES (01,'A',6164);
INSERT INTO @t(category,segment,payment) VALUES (01,'B',3241);
如果您希望將付款列作為字串,請使用以下內容
SELECT
category,
segment,
STRING_AGG(cast(payment as nvarchar(50)),' ')
WITHIN GROUP (ORDER BY category) payment
FROM
@t T
GROUP BY
category,segment
如果您希望付款欄為 NUMBER,請使用以下
SELECT
category,
segment,
SUM(payment) AS payment
FROM
@t T
GROUP BY
category,segment
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/428469.html
標籤:sql sql服务器 sql-server-2008 短信
下一篇:重組何時發生?改變狀態或改變輸入
