我有一个电源表,用来存储建筑线路的细节。电路可以是1相,也可以是3相,但在电路表中总是表示为1行。
我想把电路的细节插入到连接面板到电路的连接表中,我现在的电路表有以下详细信息
CircuitID | Voltage | Phase | PanelID | Cct |
1 | 120 | 1 | 1 | 1 |
2 | 208 | 3 | 1 | 3 |
3 | 208 | 2 | 1 | 8 |是否有可能创建一个select,当它看到一个3阶段行时,它会选择3行(或2行select 2行)并每次将Cct列增加1,还是必须创建一个循环?
CircuitID | PanelID | Cct |
1 | 1 | 1 |
2 | 1 | 3 |
2 | 1 | 4 |
2 | 1 | 5 |
3 | 1 | 8 |
3 | 1 | 9 |发布于 2016-02-23 15:58:01
您可以使用一个递归的cte来完成这个任务。
WITH cte AS
(
SELECT [CircuitID], [Voltage], [Phase], [PanelID], [Cct], [Cct] AS [Ref]
FROM [Power]
UNION ALL
SELECT [CircuitID], [Voltage], [Phase], [PanelID], [Cct] + 1, [Ref]
FROM cte
WHERE [Cct] + 1 < [Phase] + [Ref]
)
SELECT [CircuitID], [PanelID], [Cct]
FROM cte
ORDER BY [CircuitID]发布于 2016-06-21 17:38:21
最简单的方法,
Select y.* from (
Select 1 CircuitID,120 Voltage,1 Phase,1 PanelID, 1 Cct
union
Select 2,208,3,1,3
union
Select 3,208,2,1,8)y,
(Select 1 x
union
Select 2 x
union
Select 3 x)x
Where x.x <= y.Phase直接复制粘贴这个并尝试,它将运行100%。在那之后,把我的“Y”桌换成你真正的桌子。
https://stackoverflow.com/questions/35581966
复制相似问题