Bonjour, j'ai cette partie d'une vue dans une base de données Oracle et je dois le modifier sur Microsoft SQL Server.Modifier sélectionner avec se connecter par avant d'Oracle à SQL Server
with V_LOCHIERARHY_N
(nr, nivel, location, parent, systemid, siteid, orgid, count_a, count_wo, children)
AS
SELECT LEVEL, LPAD (' ', 2 * (LEVEL - 1)) || l.LOCATION nivel,
LOCATION, PARENT, systemid, siteid, orgid,
(SELECT COUNT (a.ancestor)
FROM locancestor a
WHERE a.LOCATION = l.LOCATION AND a.siteid = l.siteid),
NVL (COUNT (w.wonum), 0)
FROM maximo.workorder w
WHERE ( w.reportdate >
TO_TIMESTAMP ('2006-06-19 00:00:01',
'YYYY-MM-DD HH24:MI:SS.FF'
)
AND w.istask = 0
AND w.worktype <> 'P'
AND w.LOCATION = l.LOCATION
)
AND w.status <> 'CAN'),
l.children
FROM lochierarchy l
START WITH l.LOCATION = 'StartPoint'
CONNECT BY PRIOR l.LOCATION = l.PARENT AND l.siteid = 'SiteTest'
Ce que je besoin de ce script est de retourner tous les enfants d'une entrée donnée (la description des enfants qui se trouvent dans le tableau des emplacements).
J'ai une table avec des colonnes suivantes:
Location Parent Systemid Children Siteid Origid Lochierarchyid
A001 StartPoint Primary 2 SiteTest X 106372
A002 A001 Primary 2 SiteTest X 105472
A003 A002 Primary 0 SiteTest X 98654
A004 A002 Primary 1 SiteTest X 875543
A004B A004 Primary 0 SiteTest X 443216
B005 StartPoint Primary 0 SiteTest X 544321
Par exemple, pour A001 d'entrée retourneront dans
A002
A003
A004
A004B
B005
J'ai fait ce point de vue ci-dessous, mais je ne sais pas comment pour l'intégrer avec le premier. En outre, il ne me renvoie pas la liste dans l'ordre corectly
Parent
Children 1 of parent
Children a of children 1
children b of children 1
children 2 of parent
children a1 of children 2 and so on.
WITH testCTE AS
(
SELECT l.parent, l.location as child, l.location, l.lochierarchyid
FROM lochierarchy l
where location='SecondLocation' --and siteid='SiteTest'
UNION ALL
SELECT c.Parent, l.parent, l.location, l.lochierarchyid
FROM lochierarchy l
INNER JOIN testCTE c ON l.parent = c.location
)
SELECT *
FROM testCTE c
order BY c.parent,child asc
;
peut plaire à quelqu'un me aider? :)
Si j'ai un peu de temps, je vais travailler sur une solution. Vous pouvez également être en mesure de le comprendre par vous-même, avec un peu d'aide. L'article ci-dessous montre, étape par étape, comment reproduire toutes les fonctionnalités d'une requête "connect by" avec l'affacturage sous-requête récursive: https://oracle-base.com/articles/11g/recursive-subquery-factoring-11gr2 – mathguy
Please ne * vandalise * pas * vos messages. –
Copie possible de [Comment mettre à jour à partir d'un SELECT dans SQL Server?] (Http://stackoverflow.com/questions/2334712/how-to-update-from-a-select-in-sql-server) – Madalina