iT邦幫忙

1

[SQL]如何顯示呈現特定資料

  • 分享至 

  • xImage

請問如何把下面資料做統計(我把資料庫的資料貼到excel呈現)
https://ithelp.ithome.com.tw/upload/images/20220729/20148269Yg983q2uo2.png

<?php
.
.
.
----上面部分是抓資料及輸入欄位----
echo "<table  border='1'>";
	echo "<tr>";
	echo "<th>Month</th>";
	echo "<th>Week</th>";
	echo "<th>Day</th>";
	echo "<th>ISSUE_QTY</th>";
	echo "<th>IN_QTY</th>";
	echo "<th>OUT_QTY</th>";
    .
    .
    .
	echo "</tr>";		
	foreach($row as $row1){
	echo "<tr>";
	foreach($row1 as $key => $value){
	echo "<td>".$value."</td>";}
	echo "</tr>";}
echo "</table>";
?>

這是我想做的顯示方式
Month 202105 Week 0 Day 0 Sum 818
Month 202104 Week 202217 Day 0 Sum 846
Month 202107 Week 202228 Day 20020704 Sum 297
Month 202107 Week 202228 Day 20020706 Sum 300

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
柳丁柚
iT邦新手 1 級 ‧ 2022-07-29 11:27:20

SQL

select 'Month'+Month+'Week'+Week+'DAY'+Day+'SUM'+CAST((SUM(cost1)+SUM(cost2)+SUM(cost3)) as varchar(10)) from #Test group by Month,Week,Day

PHP
'Month'.$Month.'Week'.$Week+....

看更多先前的回應...收起先前的回應...

抱歉,我可能沒有表達清楚,SQL裡面的資料已經都呈現出來了,現在是要另外把要統計的抓出來另外呈現在表格的下方(紅色圈圈)
https://ithelp.ithome.com.tw/upload/images/20220729/20148269YYQAvRbWQr.png

柳丁柚 iT邦新手 1 級 ‧ 2022-07-29 13:48:29 檢舉

不太清楚你的意思
意思是要用現有SQL傳進來的數組
用PHP統計完 呈現表格在網頁下方嗎?

柳丁柚 iT邦新手 1 級 ‧ 2022-07-29 13:57:38 檢舉
CREATE TABLE #Test (Month varchar(10),Week varchar(10),Day varchar(10),cost1 int,cost2 int,cost3 int)

INSERT INTO #Test
values
('20210105','0','0',100,90,80),
('20210105','0','0',101,91,81),
('20210104','202117','0',102,92,82),
('20210104','202117','0',103,93,83),
('20210104','202118','0',104,94,84),
('20210104','202118','0',105,95,85);


select 'Month '+Month+' Week '+Week+' DAY '+Day+' SUM '+CAST((SUM(cost1)+SUM(cost2)+SUM(cost3)) as varchar(10)) from #Test group by Month,Week,Day


DROP TABLE #Test

多撈一次sql印出會不會比較簡單?

是撈下面表格顯示的資料,再依
Month 202105 Week 0 Day 0 Sum 818
Month 202104 Week 202217 Day 0 Sum 846
Month 202107 Week 202228 Day 20020704 Sum 297
Month 202107 Week 202228 Day 20020706 Sum 300
這樣的格式,顯示在表格下面
因為資料庫東西很多,表格內的內容是經過填值篩選之後出來的
所以想用動態的方法
依日期(年、月、日)算出總和(cost1+2+3)
然後在表格下面顯示出來(當然每次篩選的值不盡相同)

柳丁柚 iT邦新手 1 級 ‧ 2022-07-29 15:54:52 檢舉

恩.. 那這跟SQL沒甚麼關呢

因為資料庫東西很多,表格內的內容是經過填值篩選之後出來的

雖然沒看過你的table 但相信我 這絕對不算多
關於加總的用法 ronrun 大已經提示過你了 我就不多做贅述
最後 作業加油

感謝你的回答

0
sky940811
iT邦研究生 4 級 ‧ 2022-07-29 13:37:27

可以寫兩段SQL讓它跑
第一段去抓你的Month、Week、Day

SELECT Month,Week,Day FROM table1 GROUP BY Month,Week,Day

第二段將同個條件的Group起來加總

//例你的table叫table1
SELECT (SUM(cost1)+SUM(cost2)+SUM(cost3)) AS total FROM table1 
		WHERE Month='$m' AND Week='$w' AND Day='$d'
		GROUP BY Month,Week,Day

之後就可以輸出你要的結果了
Month:202105 Week: 0 Day: 0 Sum: 819
Month:202204 Week: 202217 Day: 0 Sum: 846
Month:202204 Week: 202218 Day: 0 Sum: 873
Month:202207 Week: 202228 Day: 20220704 Sum: 297
Month:202207 Week: 202228 Day: 20220706 Sum: 300

但這樣不是就從資料庫裡面抓的了嗎
我是想要從篩選出來的值(表格內的)在依日期(年、月、日)算出總和(cost1+2+3)
然後在表格下面顯示出來(當然每次篩選的值不盡相同)
所以想說有沒有什麼動態的方法可以抓到每次篩選之後的值之後做計算

sky940811 iT邦研究生 4 級 ‧ 2022-07-29 15:11:45 檢舉

比較單純的作法,就是用你篩選的條件另外寫SQL去撈資料作統計
這樣就可以動態的根據你的篩選條件作計算,並在表格下方顯示

如果你不想另外寫SQL,就要另外寫Code去分析目前表格內的年、月、日作加總後,再顯示到表格下方,感覺這樣比你直接寫一個SQL去作計算還麻煩

0
海綿寶寶
iT邦大神 1 級 ‧ 2022-07-30 00:48:14

寫好結果如下(第一筆總計應為 819 而非 818)

https://ithelp.ithome.com.tw/upload/images/20220730/20001787hTCwDgRIlS.png

https://ithelp.ithome.com.tw/upload/images/20220730/20001787TaPsR0QAya.png

0
wayne0127
iT邦新手 5 級 ‧ 2022-09-30 23:56:03
SELECT `Month`, `Week`, `Day`, SUM(`cost1`+`cost2`+`cost3`) AS 'SUM' FROM `[table_name]` GROUP BY `Month`,`Week`,`Day`

我要發表回答

立即登入回答