⑴ sql按月分組,沒有月份的數據如何顯示為0
<=12
以上是oracle的寫法核蠢。sql server可以用row_number() over(order by XXX)也可實現。
可以用上述虛擬列出的表格數據,與你的語句進行左連接,NVL空值設置為0即可。
你的WHERE語句沒有問題。如果要用GROUP BY優化的話,可能需要用到復雜的資料庫分析函數,這些分析函數衡塵用起來也比較費勁啊。。。咐氏禪
⑵ sql裡面根據月份分組顯示,急!!!
問題一:
SELECT商品名稱,SUM(casewhenmonth(銷售日期)=1then銷售數量else0end)1月,
SUM(casewhenmonth(銷售日期)=2then銷售數量else0end)2月,
SUM(casewhenmonth(銷售日期)=3then銷售數量else0end)3月,
SUM(casewhenmonth(銷售日期)=4then銷售數量else0end)4月,
SUM(casewhenmonth(銷售日期)=5then銷售數量else0end)5月,
SUM(casewhenmonth(銷售日期)=6then銷售數量else0end)6月,
SUM(casewhenmonth(銷售日期)=7then銷售數量else0end)7月
FROM表一
groupby商品名稱
問題二:
CREATEPROCP1AS
SELECT商品名稱,SUM(casewhenmonth(銷售日期)=1then銷售數量else0end)1月,
SUM(casewhenmonth(銷售日期)=2then銷售數量else0end)2月,
SUM(casewhenmonth(銷售日期)=3then銷售數量else0end)3月,
SUM(casewhenmonth(銷售日期)=4then銷售數量else0end)4月,
SUM(casewhenmonth(銷售日期)=5then銷售數量else0end)5月,
SUM(casewhenmonth(銷售日期)=6then銷售數量else0end)6月,
SUM(casewhenmonth(銷售日期)=7then銷售數量else0end)7月
FROM表一
groupby商品名稱
⑶ sql 實現按日期分組
需要用convert函數轉換日期格式,並且需要用group by來實現分組。
1、創建測試表及插入數據:
createtabletest
(tdatedatetime,
salint);
insertintotestvalues('2015-09-2312:22:22',100);
insertintotestvalues('2015-09-2301:54:34',456);
insertintotestvalues('2015-09-2414:32:35',45);
insertintotestvalues('2015-09-2422:23:43',67);
insertintotestvalues('2015-09-2519:43:22',234);
insertintotestvalues('2015-09-2508:14:12',67);
insertintotestvalues('2015-09-2604:53:34',45);
insertintotestvalues('2015-09-2609:46:54',78);
2、執行sql語句:
selectconvert(varchar(10),tdate,120)tdate,sum(sal)salfromtestgroupbyconvert(varchar(10),tdate,120);
3、執行結果: