我有一个具有以下定义的下表用户
id integer
Name varchar
Email varchar
Location varchar
Phone varchar
Picture varchar
Status varchar
我还有另一个表用户技能,其具有以下定义
id integer
Userid integer
Skill integer
否,我想合并两个表并从第一张表中选择一行,而从另一张表中选择多行,因为用户可以具有多种技能,但是我要获得多行用户数据,但我只想一行? 有人可以告诉我如何在同一行中获取用户及其相应的技能吗?
答案 0 :(得分:0)
您可以使用PIVOT进行操作。 您可以从“技能”表中选择技能,然后将其透视成一行。 然后与用户加入。
这是一个具有固定技能的示例。
WITH TEMP AS
(
SELECT 'John' AS U, 'Driver' AS S
UNION ALL
SELECT 'John' AS U, 'Plumber' AS S
UNION ALL
SELECT 'Jim' AS U, 'Driver' AS S
UNION ALL
SELECT 'Tom' AS U, 'Driver' AS S
)
SELECT * FROM
( SELECT *, U AS DRIVER FROM TEMP ) AS P
PIVOT
(
COUNT([U])
FOR S IN ([Driver],[Plumber])
) AS PIV
如果您具有多种技能,则必须首先查询该技能,然后将其转换为字符串并在该字符串上运行EXEC。