簡體   English   中英

如何從一個表中選擇單行和從另一個表中選擇多行?

[英]how to select single row from one table and multiple rows from another table toghether?

我有一個下表用戶具有以下定義

 id integer 
 Name varchar
 Email varchar 
 Location varchar
 Phone varchar
 Picture varchar
 Status varchar

我還有另一個表用戶技能,它具有以下定義

id integer
 Userid integer
 Skill   integer

不,我想組合兩個表並從第一個表中選擇單行,而從另一個表中選擇多行,因為用戶可以擁有多種技能,但我獲得了多行用戶數據,但我想要單行? 誰能告訴我如何在一行中獲取用戶及其相應的技能?

你可以用 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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM