2017-05-29 3 views
1

Ich möchte diese Tabelle erstellen und in meinem Bericht verwenden.Wie kann ich verschiedene Werte aus derselben Spalte in einer Spalte kombinieren?

Ich habe eine Tabelle wie folgt aus:

-------------------------------------- 
sum   commodity   unit 
-------------------------------------- 
100   a4 paper   x 
200   a5 paper   y 
    7   a4 paper   z 
410   pencil    e 
300   a5 paper   w 

Wie kann ich eine Tabelle wie folgt aus der obigen Tabelle zu erstellen?

-------------------------------------- 
sum   commodity   unit 
-------------------------------------- 
107   a4 paper   x-z 
500   a5 paper   y-w 
410   pencil    e 
+3

Welche Datenbank/Version verwenden Sie? – Utsav

+1

Fügen Sie den Beispieldaten eine weitere A4-Papierzeile hinzu und vergessen Sie nicht, das Ergebnis anzupassen. – jarlh

+0

meine Datenbank ist SQL-Server-Management –

Antwort

2

Wenn die Verwendung von SQL Server bedeutet, verwenden Sie unter Abfrage

CREATE TABLE table2(sums INT, commodity VARCHAR(100),unit VARCHAR(2)) 

INSERT INTO table2(sums , commodity ,unit) 
SELECT 100,'a4 paper','x' UNION ALL 
SELECT 200,'a5 paper','y' UNION ALL 
SELECT 7,'a4 paper','z' UNION ALL 
SELECT 410,'pencil','e' UNION ALL 
SELECT 300,'a5 paper','w' 

SELECT SUM(sums) , commodity , STUFF((SELECT '-' + unit FROM table2 I 
WHERE I.commodity = O.commodity FOR XML PATH('')),1,1,'') unit 
FROM table2 O 
GROUP BY commodity 
+0

tanx diese Antwort ist sehr gut –

0

Wie Sie Ihre RDBMS erwähnt havn't, können Sie so etwas wie dieses

select sum(sum), 
commodity, 
group_concat(unit SEPARATOR '-') from commo2 t 
group by commodity; 

GROUP_CONCAT arbeitet auf MYSQL verwenden. Sie können die Alternative group_concat in Ihrem RDBMS suchen, wie in Oracle können Sie stattdessen LISTAGG verwenden. Aber die Logik ist die gleiche

Demo in MYSQL

http://rextester.com/ZXZA16316

+0

meine db ist sqlserver –

+0

@ a.ali, Sie mit SQL server.Is obige Abfrage funktioniert in Ihrer Plattform. – Mansoor

+0

Warum der Downvote? – Utsav

Verwandte Themen