-1

Sale テーブルに次のデータがあります。

   Staff_Code  | Tran_Date  |  Morning_Sale | Night_Sale | Total_Sale
       S01     | 2013-05-01 |     50.00     |   300.00   |  350.00
       S02     | 2013-05-01 |     10.00     |   70.00    |   80.00
       S01     | 2013-05-02 |     100.00    |   20.00    |  120.00

次の表のような形式で、毎日の総売上を知るために「total_Day_Sale」列をもう 1 つ追加したいと思います。

   Staff_Code  | Tran_Date  |  Morning_Sale | Night_Sale | Total_Sale | Total_Day_Sale
       S01     | 2013-05-01 |     50.00     |   300.00   |  350.00    |   430.00  
       S02     | 2013-05-01 |     10.00     |   70.00    |   80.00    |   430.00
       S01     | 2013-05-02 |     100.00    |   20.00    |  120.00    |   120.00

次のコードを試していましたが、期待した結果ではありませんでした!

SELECT Tran_Date,Morning_Sale,Night_Sale,Morning_Sale + Night_Sale As 'Total_Sale', 
sum(Morning_Sale)+sum(Night_Sale ) As 'Total_Day_Sale' FROM Sale 
WHERE Tran_Date=Tran_Date  

それは可能ですか?ありがとう

4

5 に答える 5

1

保存せず、代わりにビューを使用してから、テーブルをビューに結合します。SQL Server を使用している場合は、ビューの代わりに CTE を使用できます。

WITH DailyTotal AS
(SELECT Tran_Date, sum(Morning_Sale + Night_Sale) AS "Total_Day_Sale"
FROM Sale
GROUP BY Tran_Date)
SELECT Sale.Tran_Date, Morning_Sale, Night_Sale,
       Morning_Sale + Night_Sale As "Total_Sale", Total_Day_Sale
FROM Sale, DailyTotal
WHERE Sale.Tran_Date = DailyTotal.Tran_Date;

非常に高い読み取りパフォーマンスが必要な場合は、ビューを具体化する必要がある場合があります。しかし、これから始めてください。

于 2013-05-29T05:01:48.533 に答える
0

おそらく、テーブルをそのように変更したくないでしょう。その日に新しいエントリが入力されるたびに、その日の各エントリを更新する必要があります。つまり、新しい合計を保存する必要があります。別のテーブルを使用して、毎日の合計を保存します。これにより、新しい毎日のエントリを追加するたびに 1 回の更新のみが必要になります。

Date       | Total Sale
2013-05-01 | 480.00
于 2013-05-29T04:48:46.133 に答える