-
這絕對行不通!
您應該了解 SQL 執行順序。
首先執行 SQL 以查詢 select * from *
然後是過濾器,其中
同樣,分組函式按
最後,有順序
group by 函式的條件是用於分組的列必須出現在查詢中,並且 to char(,'yyyy-mm-dd') 不被視為列。
最簡單的解決方案是分別為它們新增別名並將它們視為表,然後分組查詢它們。
即從(您的語句)別名中按列別名分組選擇列別名。
這樣就不會有問題了。
但如果你這樣檢查,你還不如直接在桌子上檢查它。
select , from table1 t1,table t2
where t1 = t2 and = 1 and to_char(,'yyyy-mm-dd') = '2010-10-01'
你對 in 的用法也不對,它需要的是乙個結果集。
如果必須按如下方式寫入:select count(*)from table2 where callid in (select callid from table1 where type = 1 and to char(createdate,'yyyy-mm-dd') = '2010-10-01'
繼續新增:如果你使用樓上至少需要修改成這樣。
select , select count(*)from table2 a2 where in (select callid from table1 a3 where to_char(,'yyyy-mm-dd')=to_char(,'yyyy-mm-dd') and
from (
select to_char(,'yyyy-mm-dd') as createdate,from table1 a1 ) a1
group by ,
這太麻煩了。
-
只要你的陳述中有問題。
select to_char(,'yyyy-mm-dd'), count(*)
select count(*)from table2 a2 where in (select callid from table1 a3 where to_char(,'yyyy-mm-dd')=to_char(,'yyyy-mm-dd') and
from table1 a1 group by to_char(,'yyyy-mm-dd'),
-
選擇 year(ordertime) year, sum(total) total sales。
從訂單中。
group by year(ordertime)
2. SQL報表計算每月的總銷售額。
選擇 Year(OrderTime)、Month(OrderTime)、Sum(Total) Total Sales。
從訂單中。
group by year(ordertime),month(ordertime
3. SQL報表計算每天的總銷售額。
選擇 Year(OrderTime)、Month(OrderTime)、Day(OrderTime)、Sum(Total) Total Sales。
從訂單中。
group by year(ordertime),month(ordertime),day(ordertime)
-
1. 建立乙個測試表,62616964757a686964616fe78988e69d8331333431373863
create table test_stu(id number, u_name varchar2(20), subject varchar2(20));
create table test_subj(id number, subject varchar2(20));
2. 插入測試資料。
insert into test_stu values(1,'張三','英語');
insert into test_stu values(2,'李思','德語');
insert into test_stu values(3,'王五','日語');
insert into test_stu values(4,'小明','英語');
insert into test_stu values(5,'狗','法語');
insert into test_subj values(1,'英語');
insert into test_subj values(2,'德語');
insert into test_subj values(3,'日語');
insert into test_subj values(4,'法語');
3. 查詢表中所有記錄的個數,選擇t*,rowid from test subj t,4、編寫 SQL,統計測試子記錄總數,以及每個科目的選修生人數;
select count(distinct as "小計",count(case when subject='英語' then 1 end) as "英語",count(case when subject='德語' then 1 end) as "德語",count(case when subject='日語' then 1 end) as "日語"
from (select t.*
from test_subj t, test_stu b
where = t
-
以 sqlserver 為例。
建立表並插入資料。
建立表名稱列表。
id int,u_name varchar(10),subject varchar(10))
建立會計科目表表。
id int,s_name varchar(10))
插入到名稱錶值 (1,'張三','英語
62616964757a686964616fe59b9ee7ad9431333337373562')
插入到名稱錶值 (2,.'李思','德語')
插入到名稱表中 值 (3,.'王五','日語')
插入到名稱錶值 (4,.'小明','英語')
插入到名稱錶值 (5,.'狗','法語')
插入到會計科目錶值 (1,'英語')
插入到會計科目錶值(2,'德語')
插入到會計科目錶值(3,'日語')
插入到會計科目錶值(4,'法語')
然後,您需要建立乙個檢視。
create view v_subject
asselect ,sum(case when then 1 else 0 end) counts
從會計科目表 A 左連線名稱表 B 上
group by
執行語句。 declare @sql varchar(4000)
set @sql = '選擇 sum(counts) 作為總計'
select @sql = @sql + ',sum(isnull(case [s_name] when '''+[s_name]+''' then [counts] end,0)) as
+[s_name]+']'
from (select distinct [s_name] from v_subject) as a
select @sql = @sql+' from [v_subject]'
exec (@sql)
結果的螢幕截圖。 為什麼結果較少?
這主要是非常複雜的動態顯示,例如,如果在會計科目表中新增乙個阿拉伯語單詞,使用這個是沒有問題的,否則會更侷限於用例時。
-
具體操作步驟如下:
1. 第一步是建立乙個測試表,詳見下圖,然後轉到下面的步驟。
2. 第二步,執行完上述DU操作後,插入測試資料,詳見下圖DAO圖,進入以下步驟。 屬。
3.第三步,完成上述操作後,記錄在查詢表中,見下圖,然後轉到以下步驟。
4.第四步,執行上述操作後,寫入SQL,對統計記錄進行分組,記錄組數,結果為4組,見下圖。 這樣,問題就解決了。
-
要求受試者完成問題並詳細解釋需求。
建議你寫乙個儲存過程,我寫乙個供你參考! cardno 是一種自定義資料型別! 觸發器很容易出錯。 >>>More
select
case when exists(select 1 from table where id=1972) >>>More
1 -- Oracle 對記錄進行重複資料刪除,可以使用 Oracle 的唯一 rowid 進行操作,例如: >>>More