因此,我在每個表中都有一個具有數值的列,并且我需要對它們進行排序。
StepName是這兩個表之間唯一的共同值
表1結構:StepName | StepOrder
abc 10
ghi48
jkl62
Table2結構:
StepName | SubStepOrder
abc 1
abc5
ghi46
jkl62
期望的結果:
StepName | Order
abc 10
abc 1
abc 5
ghi48
ghi46
jkl 62
jkl62
我需要步驟編號,并在其下面排列子步驟編號,一旦沒有子步驟編號,我們就進入下一個步驟編號及其子步驟編號
。如果第5步有6個子步驟,期望的結果集:
Step 1
步驟2.。
...步驟5。
子步驟1.。
...子步驟6。
步驟6。
uj5u.com熱心網友回復:
你只需要添加一個額外的標志,以表明每個人是一個步驟或子步驟,并在排序標準中使用:
with t as (
select *, 0 substep
from t1
union all
select *, 1
from t2
)
select stepname, steporder
from t
order by stepname,substep,StepOrder
uj5u.com熱心網友回復:
如果你想只按步驟順序列而不是按步驟名稱排序,這就可以了。
;WITH d (StepName, StepOrder, SubStepOrder) as (
SELECT StepName, StepOrder, NULL ()
FROM t1
UNIONALL
SELECT t2.StepName, t1.StepOrder, t2.SubStepOrder
FROM t2
LEFT JOIN t1 ON t1.StepName = t2.StepName
)
SELECT d.StepName, ISNULL(d.SubStepOrder, d.StepOrder) StepOrder
FROM d
ORDER BY d.StepOrder, d.SubStepOrder
編輯
作業實體:
WITH t1 (StepName, StepOrder) AS (
SELECT 'abc', 10 UNION
SELECT 'ghi', 48 UNION
SELECT 'jkl', 62AS (
SELECT 'abc', 1 UNION
SELECT 'abc', 5 UNION
SELECT 'ghi', 46 UNION
SELECT 'jkl', 62AS (
SELECT StepName, StepOrder, NULL
FROM t1
UNIONALL
SELECT t2.StepName, t1.StepOrder, t2.SubStepOrder
FROM t2
LEFT JOIN t1 ON t1.StepName = t2.StepName
)
SELECT d.StepName, ISNULL(d.SubStepOrder, d.StepOrder) StepOrder
FROM d
ORDER BY d.StepOrder, d.SubStepOrder
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/332317.html
標籤:
