-1

ストアドプロシージャ内で結果セットを結合する必要があります。このクエリを試しましたが、正しくありません。

SELECT * FROM (SELECT Field1, Field2 FROM Table1 WHERE Field4='val1') A
INNER JOIN 
SELECT * FROM (SELECT Field1, Field3 FROM Table1 WHERE Field4='val2') b
ON A.Field1 = B. Fileld1

結果のテーブルをストアドプロシージャ内で結合するにはどうすればよいですか?

4

3 に答える 3

3

これを試して:

SELECT*FROMを2回使用する必要はありません。

SELECT * FROM 
(SELECT Field1, Field2 FROM Table1 WHERE Field4='val1') A
INNER JOIN 
(SELECT Field1, Field3 FROM Table1 WHERE Field4='val2') b
ON A.Field1 = B. Fileld1
于 2012-08-10T05:25:25.023 に答える
2

あなたはこのようなことをしています(ほんの一例です):

SELECT * FROM Table1 A 
INNER JOIN 
SELECT * FROM Table2 B 
ON A.FIELD1 = B.FIELD2

どちらが間違っています。SELECT * FROM二度書く必要がないからです。正しいものは次のとおりです。

SELECT * FROM Table1 A 
INNER JOIN 
Table2 B 
ON A.FIELD1 = B.FIELD2

したがって、クエリは次のようになります(Createプロシージャを含む):

CREATE PROCEDURE testJoining 
AS 
    SELECT * FROM 
        (SELECT FIELD1, Field2 FROM Table1 WHERE Field4='VAL1') A
    INNER JOIN 
        (SELECT FIELD1, Field3 FROM Table1 WHERE Field4='VAL2') B
    ON A.FIELD1 = B.FIELD1
GO

このフィドルを参照してください。
同じテーブルからデータを選択する他の方法は次のとおりです。

SELECT A.Field1,A.Field2,B.Field3 FROM Table1 A 
INNER JOIN 
Table1 B 
ON A.FIELD1 = B.FIELD1
WHERE A.Field4='VAL1'
AND B.Field4='VAL2'

このフィドルを見る

于 2012-08-10T09:54:44.693 に答える
1

多分これは役立つでしょう

With cte_sample AS ( SELECT Field1, Field2 FROM Table1 
WHERE Field4='val1' )
SELECT Field1, Field3 FROM Table1 AS a
INNER JOIN cte_sample ON a.Field1 = cte_sample.Field1 AND
WHERE a.Field4='val2'
于 2012-08-10T06:04:21.860 に答える