查看完整版本: 麻煩各位幫個忙 關於 SQL 計算價錢語法問題
頁: [1]

asdfg0205 發表於 2018-5-26 02:46 PM

麻煩各位幫個忙 關於 SQL 計算價錢語法問題

本帖最後由 asdfg0205 於 2018-5-26 03:14 PM 編輯


不好意思  這是 目前我這個資料表的定義!
因為我想讓  單價 *數量 的出一個新的欄位 總額!
select *,單價*數量 AS '單項總額' from 資料表
得出 單項總額後 如何讓 資料定義那邊 真的自己增加一個 單項總額欄位給他放數字呢?
因為 只有新增查詢 那邊看的到結果

我想要把單項總額 通通在相加 變成 這整個的總金額
select *,sum(單項總額) AS '全部加總' from 資料表 (但他說要用群組 )
但 我只需要一格而已 (我用EXCEL來表達一下 (類似下圖))

還有個問題~ 下圖

關於 新增查詢
select * from 資料表  
請問 我沒買鉛筆盒 我要列印明細 但是 鉛筆盒 NULL 如何排除 不顯示
where後面 該怎麼弄呢?
是用限制條件 where 數量 =null  這樣的概念嗎? (我語法不對~ )


...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

sss86523 發表於 2018-5-28 10:53 PM

1.您可以使用update的方式操作,先手動新增一個總金額欄位,再輸入 UPDATE table SET total = 單價*數量 where id = 1

2.排除鉛筆盒,where 數量 is not null  ,這樣才是排除

linshangru 發表於 2018-7-8 11:37 AM

您好

關於問題一(單項總額)

資料表在設計時,通常不會這樣設計,會有資料不一致的風險,再者也多浪費儲存空間

就好比生日已代表星座,故不需要再多開欄位存放星座的資料

另外是資料修改時若發生未同時修改星座時,就會遭遇生日與星座對不起來的風險

不過針對您的需求提供以下方法

一、建立觸發程序(Trigger),如遭遇新增、修改單項或數量時,則一併更新單項總額,避免資料不一致
二、印象某一版本 MSSQL 後有此功能,我找找資料再補充

※※※※※

關於問題二(總金額)

如果堅持在您所提出的位置(鉛筆那列的最右)

SELECT [品項], [單價], [數量], [單價] * [數量] AS [單項總額], (
SELECT CASE ([品項])
WHEN '鉛筆' THEN (SELECT SUM([單價] * [數量]) FROM [訂單])
ELSE NULL
END) AS [總金額] FROM [訂單]


如果未堅持

SELECT [品項], [單價], [數量], [單價] * [數量] AS [單項總額] FROM [訂單]
UNION
SELECT NULL AS [品項], NULL AS [單價], NULL AS [數量], (SELECT SUM([單價] * [數量]) FROM [訂單]) AS [單項總額]



但如果您最終是輸出至 EXCEL 上的話,則建議「總金額」這件事可以交給 EXCEL 的函示去處理,不一定要在 SQL 上處理

※※※※※

關於問題三(排除 NULL 金額資料列)

同前面大大所回覆,使用 WHERE [數量] IS NOT NULL 即可排除問題

※※※※※

以上,希望有解決您的問題
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

linshangru 發表於 2018-7-8 11:58 AM

linshangru 發表於 2018-7-8 11:37 AM static/image/common/back.gif
您好

關於問題一(單項總額)


計算資料行規格,SQL Server 2016 版後才有



頁: [1]