再度更新
TestMain の IdとRef の RefIdの間に外部キー関係を持つ 2 つのテーブルTestMain
( Id、Name ) とRef
( Id、Name、RefId ) があります。これらは 2 つのクエリです。
SELECT T.Id, T.Name, COUNT(T.Name) AS COUNTNAME
FROM TestMain AS T
INNER JOIN Ref AS T1
ON T.[Id] = T1.[RefId]
GROUP BY T.Name,T.Id
ORDER BY T.Id
SELECT SUM(COUNTNAME)
FROM (
SELECT T.Id, COUNT(T.Name) AS COUNTNAME
FROM TestMain AS T
INNER JOIN Ref AS T1
ON T.[Id] = T1.[RefId]
GROUP BY T.Name,T.Id
) AS SUMOFCOUNTNAME
そして、私のストアド プロシージャは、上に 2 つのクエリを使用して値を返します。
CREATE PROCEDURE ReturnValues
@Name nvarchar(50) output,
@Sum int output,
@Count int output,
@OutId int output
AS
BEGIN
SET XACT_ABORT ON
BEGIN TRAN
BEGIN TRY
SELECT @OutId = T.Id, @Name = T.Name, @Count = COUNT(T.Name)
FROM TestMain AS T
INNER JOIN Ref AS T1
ON T.[Id] = T1.[RefId]
GROUP BY T.Name,T.Id
ORDER BY T.Id
SELECT @Sum = SUM(COUNTNAME)
FROM (
SELECT T.Id, COUNT(T.Name) AS COUNTNAME
FROM TestMain AS T
INNER JOIN Ref AS T1
ON T.[Id] = T1.[RefId]
GROUP BY T.Name,T.Id
) AS SUMOFCOUNTNAME
COMMIT
END TRY
BEGIN CATCH
ROLLBACK
END CATCH
END
私の問題は、変数を返す方法です: @Name
, @Sum
, @Count
, @OutId
1 つのクエリのみで。私は 2 つのクエリを使用したくありません。私のやり方が非常に悪いようです。
これは TestMain のデータです。
Id Name
1 TestName1
2 TestName2
3 TestName3
4 TestName4
5 TestName5
6 TestName6
7 TestName7
8 TestName8
9 TestName9
10 TestName10
これはRefのデータです
Id Name RefId
1 TestRef1 1
2 TestRef2 2
3 TestRef3 2
4 TestRef4 3
5 TestRef5 3
6 TestRef6 3
7 TestRef7 4
8 TestRef8 4
9 TestRef9 4
10 TestRef10 4
11 TestRef11 5
12 TestRef12 5
13 TestRef13 5
get@Sum
が必要ですが、最後のクエリは使用しません。