у меня есть предложение WITH не будет вести себя как задумано - PullRequest
0 голосов
/ 03 октября 2019

Я нашел это предложение WITH, которое я изменил для своих целей. Я не могу сказать, что я полностью понимаю, как это работает, когда я ссылаюсь на него внутри себя?

Как вы можете видеть на картинке, я получаю дубликаты в последних строках "4 gjutning" и "5 Målning".

enter image description here

Таким образом, в основном есть таблица соотношений для разных панелей, где вы сможете настроить рабочий процесс. Одна панель следует за другой, в этом случае у меня также есть параллельные панели. «3 Montering A» и «3 Montering B» представляют собой параллельные панели, которые можно увидеть из RunOrder, затем они объединяются в «4 Gjutning», за которым следует «5 Målning»

WITH PanelStructure as
(
  Select  p.factoryId, p.name Panel, p.HasScreen, ppr.ParentPanelId, ppr.PanelId, CAST(ppr.PanelId AS VarChar(Max)) as Level, CAST(1 AS int) RunOrder from PanelProductRelation ppr
inner JOIN  Panel p on ppr.PanelId=p.id
where ppr.productid=1 and ParentPanelId=0 and p.CustomerId=7 --and p.HasScreen=1
  UNION ALL
  Select  p2.factoryId, p2.name Panel,p2.HasScreen, ppr2.ParentPanelId, ppr2.PanelId,CAST(ppr2.PanelId AS VarChar(Max)) + ', ' + M.Level, CAST(1 AS int) + M.RunOrder
    from PanelProductRelation ppr2
    Inner JOIN  Panel p2 on ppr2.PanelId=p2.id
     INNER JOIN PanelStructure M ON m.PanelId = ppr2.ParentPanelId
    where ppr2.productid=1 and p2.CustomerId=7 and p2.HasScreen=1
 )
SELECT ps.* From PanelStructure  ps
LEFT JOIN (Select ps2.ParentPanelId ParentPanelId ,count(ParentPanelId) ParentPanelIdCount from PanelStructure ps2 group by ps2.ParentPanelId  ) dup ON dup.ParentPanelId=ps.ParentPanelId
;

1 Ответ

0 голосов
/ 06 ноября 2019

Вы когда-нибудь задумывались о включении distinct в ваше заявление select? Так что в вашем результате не будет двойных строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...