我需要一些幫助才能從這些表中獲取一個查詢(輸出):
表格內容
| UUID | 型別 | CatUUID |
|---|---|---|
| ZX5N | 圖片 | AB6S |
| ZX5N | 圖片 | AB5S |
| ZX5N | 檔案 | TID5 |
| ZX5N | 檔案 | TID6 |
表格影像
| UUID | 圖片 |
|---|---|
| AB6S | 測驗1 |
| AB5S | 測驗2 |
表檔案
| UUID | 檔案 |
|---|---|
| TID5 | 測驗3 |
| TID6 | 測驗4 |
表格文本
| UUID | 身體 | 描述 |
|---|---|---|
| ZX5N | 文本1 | 文本2 |
我想要的輸出來自 text.Body、text.Desc 和 image.Image
所以像這樣的:
輸出:
| UUID | 身體 | 描述 | 圖片 | 檔案 |
|---|---|---|---|---|
| ZX5N | 文本1 | 文本2 | 測驗1,測驗2 | 測驗3,測驗4 |
使用的是 MSSQL 2019
我首先嘗試僅獲取“影像”但失敗并且無法通過它,并且不知道如何將所有內容添加到同一行中,并用“逗號”分隔,從所需的輸出中可以看出
SELECT text.UUID,text.Body, text.Desc, image.Image
FROM text
LEFT OUTER JOIN content.UUID on text.UUID AND content.Type = 'image'
LEFT OUTER JOIN image on content.CatUUID = image.UUID
uj5u.com熱心網友回復:
您可以STRING_AGG()為此使用:
SELECT t.UUID, t.Body, t.[Desc],
Image = STRING_AGG(i.[Image], ','),
Doc = STRING_AGG(d.Doc, ',')
FROM dbo.[text] AS t
LEFT OUTER JOIN dbo.content AS c
ON t.UUID = c.UUID
LEFT OUTER JOIN dbo.[image] AS i
ON c.[Type] = 'image' AND c.CatUUID = i.UUID
LEFT OUTER JOIN dbo.doc AS d
ON c.[Type] = 'doc' AND c.CatUUID = d.UUID
GROUP BY t.UUID, t.Body, t.[Desc];
這個小提琴中的作業示例。
另外,嘗試使用[fewer] [reserved] [words],這需要分隔使它們成為[harder] [to] [read].
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/529822.html
