當前位置:首頁 » 編程語言 » signsql

signsql

發布時間: 2024-09-28 23:46:50

❶ 請問sql中decode函數的用法

DECODE函數是ORACLE PL/SQL是功能強大的函數之一,還只有ORACLE公司的SQL提供了此函數,其他資料庫廠商的SQL實現還沒有此功能。

DECODE函數,是ORACLE公司的SQL軟體ORACLE PL/SQL所提供的特有函數計算方式,以其簡潔的運算方式,可控的數據模型和靈活的格式轉換而聞名。

(1)signsql擴展閱讀:

DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )

Value 代表某個表的任何類型的任意列或一個通過計算所得的任何結果。當每個value值被測試,如果value的值為if1,Decode 函數的結果是then1;如果value等於if2,Decode函數結果是then2;等等。事實上,可以給出多個if/then 配對。如果value結果不等於給出的任何配對時,Decode 結果就返回else 。

需要注意的是,這里的if、then及else 都可以是函數或計算表達式。

❷ SQL里怎麼查詢銷售同比與環比

這里有個同比和環比的例子。好好研究下就知道了。表結構如下:
ID DepartName(部門) Sales(銷售量) SalesDate(銷售日期)
1 營銷一部 300 2006-7-1
2 營銷二部 500 2006-7-1
3 營銷三部 800 2006-8-1
4 營銷一部 600 2006-8-1
5 營銷二部 800 2006-8-1
6 營銷一部 400 2007-7-1
7 營銷二部 800 2007-7-1
8 營銷三部 700 2007-8-1
9 營銷一部 600 2008-7-1
10 營銷二部 300 2008-7-1
要根據要求得到以下數據
1)選擇開始年月,結束年月,得到同比數據
eg.開始年月:2006-7 結束:2006-8
獲取:
對比年月 DepartName(部門) Sales(銷售總量) 上期 差異 差異率
2006-7 營銷一部 300 0 300 無窮大
2006-7 營銷一部 500 0 500 無窮大
2006-7 營銷三部 0 0 0 0
2006-8 .... ....
(2)選擇月份 獲取環比數據
eg.選擇 2008.7
部門 本月銷售總量 去年同期 變動 變動率
營銷一部 600 0 0 0
營銷二部 300 800 -500 (300-800)/800 Code
1--雇員數據
2CREATE TABLE Employee(
3ID int, --雇員編號(主鍵)
4Name nvarchar(10), --雇員名稱
5Dept nvarchar(10)) --所屬部門
6INSERT Employee SELECT 1,N'張三',N'大客戶部'
7UNION ALL SELECT 2,N'李四',N'大客戶部'
8UNION ALL SELECT 3,N'王五',N'銷售一部'
9--費用表
10CREATE TABLE Expenses(
11EmployeeID int, --雇員編號
12Date Datetime, --發生日期
13Expenses nvarchar(10), --指標名稱
14[Money] decimal(10,2)) --發生金額
15INSERT Expenses SELECT 1,'2004-01-01',N'銷售',100
16UNION ALL SELECT 1,'2004-01-02',N'銷售',150
17UNION ALL SELECT 1,'2004-12-01',N'銷售',200
18UNION ALL SELECT 1,'2005-01-10',N'銷售', 80
19UNION ALL SELECT 1,'2005-01-15',N'銷售', 90
20UNION ALL SELECT 1,'2005-01-21',N'成本', 8
21UNION ALL SELECT 2,'2004-12-01',N'成本', 2
22UNION ALL SELECT 2,'2005-01-10',N'銷售', 10
23UNION ALL SELECT 2,'2005-01-15',N'銷售', 40
24UNION ALL SELECT 2,'2005-01-21',N'成本', 8
25UNION ALL SELECT 3,'2004-01-01',N'銷售',200
26UNION ALL SELECT 3,'2004-12-10',N'銷售', 80
27UNION ALL SELECT 3,'2005-01-15',N'銷售', 90
28UNION ALL SELECT 3,'2005-01-21',N'銷售', 8
29GO
30
31--統計
32DECLARE @Period char(6)
33SET @Period='200501' --統計的年月
34
35--統計處理
36DECLARE @Last_Period char(6),@Previous_Period char(6)
37SELECT @Last_Period=CONVERT(char(6),DATEADD(Year,-1,@Period+'01'),112),
38 @Previous_Period=CONVERT(char(6),DATEADD(Month,-1,@Period+'01'),112)
39SELECT Dept,Expenses,Name,
40 C_Money,
41 L_Money,
42 L_UP=C_Money-L_Money,
43 L_Prec=CASE
44 WHEN L_Money=0 THEN '----'
45 ELSE SUBSTRING('↓-↑',CAST(SIGN(C_Money-L_Money) as int)+2,1)
46 +CAST(CAST(ABS(C_Money-L_Money)*100/P_Money as decimal(10,2)) as varchar)+'%'
47 END,
48 P_Money,
49 P_UP=C_Money-P_Money,
50 P_Prec=CASE
51 WHEN P_Money=0 THEN '----'
52 ELSE SUBSTRING('↓-↑',CAST(SIGN(C_Money-P_Money) as int)+2,1)
53 +CAST(CAST(ABS(C_Money-P_Money)*100/P_Money as decimal(10,2)) as varchar)+'%'
54 END
55FROM(
56 SELECT a.Dept,b.Expenses,
57 Name=CASE WHEN GROUPING(Name)=1 THEN '<合計>' ELSE a.Name END,
58 C_Money=ISNULL(SUM(CASE CONVERT(char(6),b.Date,112) WHEN @Period THEN b.[Money] END),0),
59 L_Money=ISNULL(SUM(CASE CONVERT(char(6),b.Date,112) WHEN @Last_Period THEN b.[Money] END),0),
60 P_Money=ISNULL(SUM(CASE CONVERT(char(6),b.Date,112) WHEN @Previous_Period THEN b.[Money] END),0)
61 FROM Employee a,Expenses b
62 WHERE a.ID=b.EmployeeID
63 AND CONVERT(char(6),b.Date,112) IN(@Last_Period,@Previous_Period,@Period)
64 GROUP BY a.Dept,b.Expenses,a.ID,a.Name WITH ROLLUP
65 HAVING (GROUPING(a.Name)=0 OR GROUPING(a.ID)=1)
66 AND (GROUPING(a.ID)=0 OR GROUPING(b.Expenses)=0))a
67
68/**//*--結果
69Dept Expenses Name C_Money L_Money L_UP L_Prec P_Money P_UP P_Prec
70------- --------- -------- --------- -------- -------- -------- -------- -------- ------
71大客戶部 成本 張三 8.00 .00 8.00 ---- .00 8.00 ----
72大客戶部 成本 李四 8.00 .00 8.00 ---- 2.00 6.00 ↑300.00%
73大客戶部 成本 <合計> 16.00 .00 16.00 ---- 2.00 14.00 ↑700.00%
74大客戶部 銷售 張三 170.00 250.00 -80.00 ↓32.00% 200.00 -30.00 ↓15.00%
75大客戶部 銷售 李四 50.00 .00 50.00 ---- .00 50.00 ----
76大客戶部 銷售 <合計> 220.00 250.00 -30.00 ↓12.00% 200.00 20.00 ↑10.00%
77銷售一部 銷售 王五 98.00 200.00 -102.00 ↓51.00% 80.00 18.00 ↑22.50%
78銷售一部 銷售 <合計> 98.00 200.00 -102.00 ↓51.00% 80.00 18.00 ↑22.50%
79--*/
80
81
82

❸ sql語句 時間中的(時分秒)比較 急!

select * from ManualSign
Where (Convert(varchar(20),'08:30:00',108))>(Convert(varchar(20),SignTime,108))

這樣就行了

熱點內容
aes演算法模式 發布:2024-11-24 17:47:19 瀏覽:611
linux查看埠是否佔用 發布:2024-11-24 17:42:15 瀏覽:466
手機電影天堂的文件夾 發布:2024-11-24 17:39:08 瀏覽:689
吉林金稅盤安全伺服器地址 發布:2024-11-24 17:39:00 瀏覽:276
360無法訪問網路 發布:2024-11-24 17:32:48 瀏覽:558
普通員工解壓拓展注意什麼細節 發布:2024-11-24 17:32:06 瀏覽:435
安裝密碼鎖為什麼要在裡面纏膠帶 發布:2024-11-24 17:27:59 瀏覽:980
php列標記 發布:2024-11-24 17:23:48 瀏覽:566
C語言項目案例分析 發布:2024-11-24 17:14:48 瀏覽:978
河內塔演算法 發布:2024-11-24 17:03:05 瀏覽:726