我有一个表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