2016-03-30 3 views
1

を選択すると、これは「から」使用しないSELECT文です(外適用)SQLからなしのSQLで

select 1, 2, 3 

の下にこのような何かを行うことができます。私はちょうど最近、外側のアプリケーションを使用する方法を拾う。

通常はこのように、外側適用されますされます:

SELECT * FROM Department D 
OUTER APPLY 
    ( 
    SELECT * FROM Employee E 
    WHERE E.DepartmentID = D.DepartmentID 
    ) A 

があった場合、私は、私は上記のような声明から使用せずにこれを行う方法を疑問に思って?

For example: 
Select 1, 
     2, 
OUTER APPLY 
      ( 
       SELECT * FROM Employee E 
      WHERE E.DepartmentID = D.DepartmentID 
      ) E   OUTER APPLY 
    ( 
    SELECT * FROM Employee_Service serv 
    WHERE E.DepartmentID = serv.DepartmentID 
    ) S 
+2

を試してみてください? –

+0

非標準の「外部適用」に基づいて 'sql-server'タグが追加されました –

答えて

3

これは、あなたが探しているものに近いかもしれません:

SELECT * 
FROM (Select 1 AS DepartmentID UNION ALL SELECT 2) AS D 
OUTER APPLY 
( 
    SELECT * 
    FROM Employee E 
    WHERE E.DepartmentID = D.DepartmentID 
) E   
OUTER APPLY 
(
    SELECT * 
    FROM Employee_Service serv 
    WHERE E.DepartmentID = serv.DepartmentID 
) S 

や、VALUESを使用して:あなたは、複数の行を持つ単一の列をしたい場合は

SELECT * 
FROM (VALUES (1), (2)) AS D(DepartmentID) 
OUTER APPLY 
( 
    SELECT * 
    FROM Employee E 
    WHERE E.DepartmentID = D.DepartmentID 
) E   
OUTER APPLY 
(
    SELECT * 
    FROM Employee_Service serv 
    WHERE E.DepartmentID = serv.DepartmentID 
) S 
+0

あなたの助けをありがとう – RedRocket

1

その後、

試してみてください

SELECT * 
FROM (Select 1 UNION ALL SELECT 2) AS D(DepartmentID) 
OUTER APPLY 
( 
    SELECT * FROM Employee E 
    WHERE E.DepartmentID = D.DepartmentID 
) E   
OUTER APPLY 
( 
    SELECT * FROM Employee_Service serv 
    WHERE E.DepartmentID = serv.DepartmentID 
) S 

あなたはマルチ列を持つ単一の行をしたい場合は、

は、RDBMSは、使用している。この

SELECT * 
FROM (Select 1 DepartmentID,2 DepartmentName,..) AS D 
OUTER APPLY 
( 
    SELECT * FROM Employee E 
    WHERE E.DepartmentID = D.DepartmentID 
) E   
OUTER APPLY 
( 
    SELECT * FROM Employee_Service serv 
    WHERE E.DepartmentID = serv.DepartmentID 
) S 
+0

あなたの助けをありがとう – RedRocket

関連する問題