我需要在存儲過程中加入結果集,我試過這個查詢但它不正確。在存儲過程中加入SQL查詢結果
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
如何在存儲過程中連接結果表?
我需要在存儲過程中加入結果集,我試過這個查詢但它不正確。在存儲過程中加入SQL查詢結果
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 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 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
See this fiddle.
從同一個表中選擇數據的其他方法是:
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'
SQLFiddle參考的+1。很酷 - 謝謝你! – paulsm4 2012-08-10 15:54:50
「加入」工作相同w存儲過程的ay * inside *和純T-SQL一樣。你的加入完全錯了。問:你想要做什麼? – paulsm4 2012-08-10 05:13:36