如何在一行中填充列?

时间:2015-09-14 14:06:27

标签: sql-server

我有两张桌子:

Tab1(columns containing only id ) 

Tab2 (columns containing id and service)

我加入了两张桌子:

select tab1.id,tab2.service 
from tab1 
inner join tab2 on tab1.id=tab2.id

我的问题是我的id为1,因为我有两个服务现金和存款。对于Eg。我在加入表格之后就开始了

id service 
1 cash
1 deposit

但我希望单行为

id service
1 cash/deposit    

如何连接那个??

2 个答案:

答案 0 :(得分:0)

根据您提供的有限信息,我了解您的问题如下:

您有两个表,服务和ID。
它们都具有与其他表匹配的主键(ID)。
一个表有一个值列(现金)。
另一个表有一个值列(存款)。
您希望在一行中同时显示两个值列。

SELECT Service.ID, ID.ID, Service.Cash, ID.Deposit
FROM Service JOIN ID ON Service.ID = ID.ID

如果这是错误的,请纠正我或提供更多信息以便我查看我的答案。

根据您的最新信息:

SELECT Table1.ID, Table2.ID, Table1.Service, Table2.Service
FROM Table1 JOIN Table2 ON Table1.ID = Table2.ID

同样,请提供所要求的信息以便清楚。

答案 1 :(得分:0)

Based on your revised question, this will hopefully give you what you are after:

Create Sample Tables:

CREATE TABLE Table1 (ID INT)
CREATE TABLE Table2 (ID INT, Service NVARCHAR(MAX))

Insert Sample Data:

INSERT INTO Table1 VALUES ('1')
INSERT INTO Table1 VALUES ('2')
INSERT INTO Table1 VALUES ('3')
INSERT INTO Table2 VALUES ('1', 'Cash')
INSERT INTO Table2 VALUES ('1', 'Deposit')
INSERT INTO Table2 VALUES ('2', 'Cash')
INSERT INTO Table2 VALUES ('2', 'Deposit')
INSERT INTO Table2 VALUES ('3', 'Cash')
INSERT INTO Table2 VALUES ('3', 'Deposit')

Two Columns:

SELECT Table1.ID, MAX(CASE Table2.Service WHEN 'Cash' THEN Table2.Service END), MAX(CASE Table2.Service WHEN 'Deposit' THEN Table2.Service END)
FROM Table1 JOIN Table2 ON Table1.ID = Table2.ID
GROUP BY Table1.ID

Concatenated:

SELECT Table1.ID, CONCAT(MAX(CASE Table2.Service WHEN 'Cash' THEN Table2.Service END), '/', MAX(CASE Table2.Service WHEN 'Deposit' THEN Table2.Service END))
FROM Table1 JOIN Table2 ON Table1.ID = Table2.ID
GROUP BY Table1.ID

Please mark this as answer if it answers your question!