[英]Using a SQL join table as extra columns
我試圖編寫一個查詢,從其他幾個表中提取數據作為查詢中的列。
數據如下:
用戶表
ID ACCOUNT_ID FIRST_NAME LAST_NAME
1 1 Joe SMITH
2 1 Bill WALTERS
3 1 Bill JOHNSON
用戶字段表
ID ACCOUNT_ID NAME
1 1 CITY
2 1 STATE
3 2 EMPLOYEE_NUMBER
4 3 MIDDLE_NAME
用戶字段數據表
ID USER_FIELD_ID USER_ID DATA
1 1 1 LINCOLN
2 2 1 NEBRASKA
我想要一個類似的查詢:
SELECT FIRST_NAME, LAST_NAME FROM users WHERE ACCOUNT_ID=1
但是我希望將CITY和STATE作為列包括在內,但是根據ACCOUNT_ID和“用戶字段”表中的數據,它們將有所不同。
我以為使用PIVOT可以實現此目的,但是我很難將其發揮作用。 謝謝!
使用此代碼的行為將類似於PIVOT。 您需要為所需的每個User Field
類型添加一個MAX(CASE)
。 由於它使用的是匯總,因此對於每個User Field
,您只能從User Fields Data
獲得一個值
SELECT u.FIRST_NAME,
u.LAST_NAME,
uf.CITY,
uf.STATE
FROM users u
LEFT JOIN (SELECT uf.ACCOUNT_ID,
ufd.USER_ID,
MAX(CASE WHEN uf.NAME = 'CITY' THEN [DATA] END) AS CITY,
MAX(CASE WHEN uf.NAME = 'STATE' THEN [DATA] END) AS STATE
FROM UserFields uf
JOIN UserFieldData ufd ON uf.ID = ufd.USER_FIELD_ID
GROUP BY uf.ACCOUNT_ID,
ufd.USER_ID
) uf ON uf.USER_ID = u.ID
AND uf.ACCOUNT_ID = u.ACCOUNT_ID
WHERE u.ACCOUNT_ID = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.