3

ここでは SQL Server の初心者です。SELECT/UPDATE ステートメントで問題が発生しています。注文番号列と行番号列を持つテーブルがあります。以下の select ステートメントは、必要な値を返します。結果を取得し、その番号を注文番号が一致する同じテーブルの列に挿入したいと思います。私はこれを考えすぎていますか?それとも、複雑さを考えているのでしょうか?:)

    SELECT
    ORDNUM, COUNT(LINNUM) AS 'CountLines'
    FROM [TableName]
    WHERE STS = '3' AND DUEQTY < ONHAND AND STYPE = 'CU'
    GROUP BY ORDNUM

    UPDATE [TableName]
    SET LNCNT = 'CountLines'
    WHERE ORDNUM = ORDNUM

前もって感謝します。ベン

更新: 以下の Andomars ソリューションを使用しましたが、うまくいきました。ご協力ありがとうございました。

4

4 に答える 4

12

SQL Server 構文の使用:

update  tn
set     LNCNT = SubQuery.CountLines
from    TableName as tn
join    (
        select  ordnum
        ,       count(linnum) as CountLines
        from    TableName
        where   sts = '3'
                and DUEQTY < ONHAND 
                and STYPE = 'CU'
        group by
                ordnum
        ) as SubQuery
on      SubQuery.ordnum = tn.ordnum
于 2012-08-16T15:27:56.903 に答える
2

以下は、SQL Server で機能するはずです。

with counts as
(
    SELECT
    ORDNUM, COUNT(LINNUM) AS 'CountLines'
    FROM [TableName]
    WHERE STS = '3' AND DUEQTY < ONHAND AND STYPE = 'CU'
    GROUP BY ORDNUM
)

    UPDATE tn
    SET tn.LNCNT = c.CountLines
    FROM TableName tn
    INNER JOIN counts as c
    ON tn.OrderNum = c.OrderNum
于 2012-08-16T15:27:46.670 に答える
0

MS SQL を使用している場合は、DECLARE を試しました。

DECLARE @countlines INT 
SET @countlines = SELECT COUNT(LINNUM) FROM [AdvPickTicket] WHERE STS = '3' 
AND DUEQTY < ONHAND AND STYPE = 'CU' GROUP BY ORDNUM
UPDATE [TableName]
SET LNCNT = @countlines
WHERE ORDNUM = ORDNUM
于 2012-08-16T15:34:08.607 に答える