oracle中select多欄位但是隻groupby其中某

時間 2021-10-14 22:23:54

1樓:匿名使用者

1、建立測試表,

create table exp_report_accounts(account_id varchar2(20), responsibility_cent_id varchar2(20), period_name varchar2(20));

2、插入測試資料

insert into exp_report_accounts values(1001, 9001, 20130502);

insert into exp_report_accounts values(1002, 9001, 20140902);

insert into exp_report_accounts values(1003, 9002, 20130915);

insert into exp_report_accounts values(1004, 9003, 20131212);

insert into exp_report_accounts values(1005, 9003, 20141212);

commit;

3、查詢表中全量資料,select t.*, rowid from exp_report_accounts t;

4、編寫sql,select多欄位 ,而且做group by操作;

select account_id,

responsibility_cent_id,

substr(period_name, 1, 4) as period_year,

count(*)

from exp_report_accounts era

group by account_id, responsibility_cent_id, substr(period_name, 1, 4)

2樓:匿名使用者

基本概念有點問題呀兄弟

group集合計算出的結果,要不就是group要素自己,要不就是經過統計計算的結果.

select a from table group b,肯定不行, 但是select max(a) from table group b就可以

你這個問題就是需要按年統計,自然是在group中動手group by 加上 substr(period_name) 就能select出來 substr(period_name)

3樓:匿名使用者

你這個語句裡面沒有使用分組函式,就是無法使用group by 子句select era.account_id,era.responsibility_center_id,sum(substr(era.

period_name,0,4)) period_year

from exp_report_accounts eragroup by era.account_id, era.responsibility_center_id

可以參考一下! 希望對你所以幫助

4樓:匿名使用者

巢狀一層:

select aa.account_id,aa.responisibity_center_id,period_year

from (select t.*,substr(t.period_name,0,4) period_year

from exp_report_accounts t)aagroup by aa.account_id,aa.responisibity_center_id,period_year

5樓:匿名使用者

不是計算的欄位,必須在group 裡

oracle中我只需要對其中某一個欄位groupby,其它欄位的資料我也要只是不需要groupby

6樓:

那其它欄位就不要顯示,或者取其它欄位的最大值、最小值、平均值…等等函式。

假如兩個資料組合到一起了,那麼其它欄位的值怎麼組合呢?到底顯示哪個呢?例如:

lie1 lie2 lie3

a 1 2

a 2 3

假如你對lie1進行groupby

那麼兩條資料組合到一起了吧,然後列2顯示哪條呢?豈不是資料會丟掉了,

所以在group by的時候去lie2的最大值、最小值、平均值…等等函式。

這樣就不會有問題了。

具體如下:select lie1,函式(lie2) from table group by lie1.

希望我說的你能夠看懂。不懂可以再問。

7樓:

把你的sql語句和表結構粘上來。

8樓:

分析函式可以實現,不過你group by什麼呢?sum,count????

sql中查詢多個欄位時,group by 要怎麼使用?

9樓:惠惠

你根據到貨地點order by排序即可,不需要group by。

sql語言,是結構化查詢語言(structured query language)的簡稱。

sql語言是一種資料庫查詢和程式設計語言,用於存取資料以及查詢、更新和管理關聯式資料庫系統,同時也是資料庫指令碼檔案的副檔名。

sql語言是高階的非過程化程式語言,允許使用者在高層資料結構上工作。

它不要求使用者指定對資料的存放方法,也不需要使用者瞭解具體的資料存放方式,所以具有完全不同底層結構的不同資料庫系統可以使用相同的結構化查詢語言作為資料輸入與管理的介面。

sql語言語句可以巢狀,這使他具有極大的靈活性和強大的功能。

10樓:

group by是要用在sum(),max(),min()等聚合函式的後面 不能單獨使用,如果要排序的話 根據order by 排序就行了,這個排序在一定意義上也可以理解為分組

11樓:o小大將

你這個意思是要分組麼,直接用索引不就行了麼~~到貨地點 正序或倒序 ,用order by也行,如果要一個組內再分組,那就用多個索引就行了~~

12樓:匿名使用者

為什麼要做分組呢?分組目的是什麼 ?

在oracle中group by 中包含了彙總的欄位會出現什麼情況? 20

13樓:席翊君

select name from a group by name ,id order by id ascorder by 的欄位必須在group by 中有

sql根據某一個欄位重複只取第一條資料

14樓:

使用分析函式row_number() over (partiion by ... order by ...)來進行分組編號,然後取分組標號值為1的記錄即可。

目前主流的資料庫都有支援分析函式,很好用。

其中,partition by 是指定按哪些欄位進行分組,這些欄位值相同的記錄將在一起編號;order by則是指定在同一組中進行編號時是按照怎樣的順序。

示例(sql server 2005或以上適用):

select s.*

from (

select *, row_number() over (partition by [手機號] order by [店鋪]) as group_idx

from table_name

) swhere s.group_idx = 1

15樓:匿名使用者

用group by 最後一個欄位 用個max()

16樓:發生等將發生

如果僅僅只是查詢出來去從,那麼就用distinctselect distinct 需要去重的列明(允許多列) from table

如果是需要在表中刪除,可以這樣處理

1、建立臨時表,將重複記錄查詢出來去重插入到臨時表2、刪除實表中的重複記錄

3、將臨時表中的記錄插入到實表

處理完成

17樓:匿名使用者

select * into ##tmp_table from 表where 1=2

declare @phoneno int

declare cur cursor forselect 手機號 from 表 group by 手機號open cur

fetch next from cur into @phonenowhile @@fetch_status=0begin

insert into ##tmp_tableselect top 1 from 表 where 手機號=@phoneno

fetch next from cur into @phonenoendselect * from ##tmp_tabledrop table ##tmp_table

18樓:匿名使用者

最簡單的 select distinct (手機號)

19樓:老漢肆

select

temp.id,

temp.device_id,

temp.update_dtm,

temp.test_result

from (

select

t.id,

t.device_id,

t.update_dtm,

t.test_result,

row_number() over(partition by device_id order by t.update_dtm desc) as row_***

from device_info_tbl t ) tempwhere temp.row_*** = '1'

在oracle中如何用一條select語句查詢欄位中非純

1.正則判斷,適用於10g以上版本 非正整數 select 欄位 from 表 where regexp replace 欄位,d is not null 非數值型別 select 欄位 from 表 where regexp replace 欄位,d d is not null 2.自定義函式,判...

oracle儲存過程select語句必須帶into嗎

oracle儲存過程select語句必須帶into。因為要將查詢結果放到變數中,如以下儲存過程 create or replace procedure p test asv begintime varchar2 20 v endtime varchar2 20 v str varchar2 10 b...

oracle中如何資料庫,oracle中如何新建一個資料庫

oracle裡面不叫資料庫了,叫建立一個名稱空間建立表空間的語法是 create tablespace tablespacenamedatafile filename size integer k m autoextend off on 建立使用者 create user scce identifi...