我有一個表IdentifySlot
像這樣的數據:限制在SQL Server表中的行
Cname TotalEmpty
------------------
CName1 4
CName2 3
CName3 1
CName4 7
CName5 30
CName6 36
,我也有一個ActualSlot
表:
CName AppDate RankNumber
--------------------------------
CName1 05/01/2018 1
CName1 05/01/2018 2
CName1 16/02/2018 3
CName2 05/01/2018 1
CName2 19/01/2018 2
CName2 17/02/2018 3
CName2 18/02/2018 4
CName2 19/02/2018 5
CName2 20/02/2018 6
CName3 15/01/2018 1
CName3 16/02/2018 2
CName3 21/02/2018 3
CName4 12/01/2018 1
CName4 02/02/2018 2
CName5 14/01/2018 1
CName5 02/02/2018 2
CName5 22/02/2018 3
CName6 26/01/2018 1
CName6 09/02/2018 2
CName6 09/02/2018 3
Cname+n date+n n
我想限制這樣的行:我想使用IdentifySlot
表中的TotalEmpty
列,並將ActualSlot
表中的行限制爲僅限於
-
個
- 4行用於CName1,
- 3行爲CName2
- 1行用於CName3
- 7行用於CName4和CName5
- 30行等等...
從ActualSlot
表。
這是我到目前爲止已經試過:
SELECT TOP (b.TotalEmpty)
ApptID, CName, AppDate
FROM
ActualSlot a
LEFT JOIN
ActualSlot b ON a.CName = b.CName
WHERE
b.CName = 'CName1'
UNION
SELECT TOP (b.TotalEmpty)
ApptID, CName, AppDate
FROM
ActualSlot a
LEFT JOIN
ActualSlot b ON a.CName = b.CName
WHERE
b.CName = 'CName2'
UNION
SELECT TOP (b.TotalEmpty)
ApptID, CName, AppDate
FROM
ActualSlot a
LEFT JOIN
ActualSlot b ON a.CName = b.CName
WHERE
b.CName = 'CName3'
,但它不工作。我想我需要編寫一個存儲過程來循環一次,而不是工會的「CNAME記錄」一...任何幫助表示讚賞感謝
你可以使用一個跨應用或類似的東西,如果你想要的。例如'SELECT b。* FROM IdentifySlot AS CROSS APPLY(SELECT TOP(a.TotalEmpty)* FROM ActualSlot AS b WHERE b.CName = a.CName)AS b;' – ZLK
是實際槽位表中的一列嗎? –
是ranknumber是一列 – jk1844