0

次のスクリプトは結果セットをループし、各レコードを2回表示します。これの原因を教えてください。WHERE句でtransaction_dateのコメントが解除され、結果が日用で正しい場合、transaaction_dateはコメント化され、日付に関係なく全ロードを実行します。これは、doubleの結果セットが返される場合です。

ご協力ありがとうございました

/* Sales by Customer
*/

/*
      Variables Declared
*/
      DECLARE @Loaddate DATETIME
      DECLARE @Branch_no TINYINT
/* 
      Set Variables
*/
      SET @branch_no = 0  
    WHILE @branch_no  < 1

    BEGIN
    SET @Branch_no = @branch_no + 1
    SET @Loaddate = (SELECT last_txn_date FROM wf_cntl_details w
                                    WHERE w.depot_no = @Branch_no 
                                    AND tbl_name = 'Invoice_Header')

SELECT h.depot_no,h.customer_code,h.transaction_date,h.transaction_no
FROM ft_inv_hdr_sales h
                  INNER JOIN ft_Inv_dtl_sales d      ON 
                              h.depot_no = d.depot_no AND h.transaction_date = d.transaction_date  AND
                              h.transaction_no = d.transaction_no

WHERE d.depot_no = @Branch_no  -- and h.transaction_date = @Loaddate
GROUP BY h.depot_no,h.customer_code,h.transaction_date,h.transaction_no 

END 
4

1 に答える 1

0

ft_inv_hdr_sales テーブルには、同じ顧客でトランザクション日付が異なる複数のエントリ (確率 2 が最も多い) が必要です。

于 2012-06-13T17:57:34.767 に答える