Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在存储过程中联接SQL查询结果_Sql_Sql Server 2008 - Fatal编程技术网

在存储过程中联接SQL查询结果

在存储过程中联接SQL查询结果,sql,sql-server-2008,Sql,Sql Server 2008,我需要在存储过程中连接结果集,我尝试了这个查询,但它不正确 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 如何在存储过程中联接结果表?尝试以下方法: 您不必两次使用SELECT*FR

我需要在存储过程中连接结果集,我尝试了这个查询,但它不正确

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
如何在存储过程中联接结果表?

尝试以下方法:

您不必两次使用SELECT*FROM

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
也许这会有帮助

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'

您正在这样做(仅举一个例子):

这是错误的。因为您不需要写两次
SELECT*FROM
。正确的一点是:

SELECT * FROM Table1 A 
INNER JOIN 
Table2 B 
ON A.FIELD1 = B.FIELD2
因此,您的查询应该是(包括创建过程):


从同一个表中选择数据的其他方法是:

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'

“连接”在存储过程中的工作方式与纯T-SQL相同。你的加入是完全错误的。问:你到底想做什么???
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'