我有一個由以下人員組成的表格:
| ID | 文本 | 作業編號 | 作業 ID |
|---|---|---|---|
| 1 | 托托 | 45 | 56,58 |
| 2 | 塔塔 | 45 | 45.51 |
| 3 | 蒂蒂 | 46 |
我想要:
| ID | 文本 | 計算作業 ID |
|---|---|---|
| 1 | 托托 | 45 |
| 1 | 托托 | 56 |
| 1 | 托托 | 58 |
| 2 | 塔塔 | 45 |
| 2 | 塔塔 | 51 |
| 3 | 蒂蒂 | 46 |
我試過的
我試過交叉申請:
SELECT
Id, Text, x.value as CalculatedJobId
FROM tbl_data
CROSS APPLY string_split(jobsIds, ',') x
WHERE x.value <> ''
但是JobsIds中不包含jobId的情況消失了,jobsIds為空的情況也消失了。所以我得到了:
| ID | 文本 | 計算作業 ID |
|---|---|---|
| 1 | 托托 | 56 |
| 1 | 托托 | 58 |
| 2 | 塔塔 | 45 |
| 2 | 塔塔 | 51 |
我試圖交叉應用兩次,但它不是正確的語法:
SELECT
Id, Text, x.value as CalculatedJobId, y.value
FROM tbl_data
CROSS APPLY string_split(jobsIds, ',') x
CROSS APPLY JobId y
WHERE x.value <> ''
我試過交叉連接,但這也不是解決方案......我想不出解決方案,你能幫我嗎?
uj5u.com熱心網友回復:
似乎您需要先連接值JobId,然后再拆分:
SELECT d.Id,
d.Text,
SS.value AS CalculatedJobId
FROM dbo.tbl_data d
CROSS APPLY STRING_SPLIT(CONCAT_WS(',',d.JobID,d.jobsIds), ',') SS;
注意:這是假定的值JobsIds對Id 3是NULL不為零長度字串('')。如果是后者,我建議您應該先存盤NULL,否則您可以使用NULLIF它NULL在函式中將其轉換為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/381073.html
標籤:sql sql-server 查询语句
上一篇:按日期排序,然后按SQLServer中的其他欄位排序
下一篇:標量函式是不確定的
