當前位置:首頁 » 編程語言 » sql復雜
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql復雜

發布時間: 2022-07-06 07:21:51

A. 復雜的sql語句

描述有點不具體,這個是把結果以列的形式展示:

selectid,name,casewhentime1>time2then'錯誤一'endastype1,
casewhentime1>time3then'錯誤二'endastype2,
casewhentime4>time5then'錯誤三'endastype3
fromtest
wherename='小明'

---結果集放在一起
selectid,name,casewhentime1>time2then'錯誤一'end+
casewhentime1>time3then'錯誤二'end+
casewhentime4>time5then'錯誤三'endasResult
fromtest
wherename='小明'

B. sql復雜統計

可能是我沒看明白問題,按照我對問題的理解,解決如下:
select num,count(*) from tongji group by num
只是單純的分組並統計各自組的數量,前提是你的表中,與編號相對應的數量都是1。如果不為1的話,就麻煩一點,估計需要用到存儲過程。

C. sql復雜的存儲過程寫法

你的參數不知道都是什麼意思

declare @xi varchar(10)
select @xi = 系 from stud where sfz = @sfz

select *
from stud a
where 系= @xi
and
(not exists(select 1 from stud where 系= a.系 and 年齡 < a.年齡)
or
not exists(select 1 from stud where 系= a.系 and 年齡 > a.年齡)
)

D. 一個極其復雜的sql語句

我沒有你的表結構,我只給你說一下思想.首先你有五個表,get(order_id,id),account(type_id,money),travel(order_id,money),finance(ord_id,money),tourise(id)
有一個問題你沒有說清楚,你要的是兩者比較大於的記錄還是小於的記錄.
下面是你要的SQL語句,你寫的和什麼以及什麼都搞亂了!一定要把你的話寫清楚我才能幫你解決:
select get.order_id,sum(account.money),sum(travel.money)
from get inner join account on get.id=account.type_id
inner join travel on get.order_id=travel.order_id
inner join finance on get.order_id=finance.order_id
inner join tourist on get.order_id=tourist.id
where sum(account.money)>sum(travel.money)
group by get.order_id
因為我沒有你的表結構,你只要看著我的捎改一下就行了!其實並不難,並且你敘述的內容也不是很清楚.

E. 復雜sql排序

你好,很高興回答你的問題。
你的問題可以通過類似下面的sql完成。
select * from 表 order by cnt desc,createtime desc。
如果有幫助到你,請點擊採納。

F. sql復雜語句

我猜到lz在糾結什麼問題。

where a.Change_Time=(select MIN(c.Change_Time) from Change c where c.Change_Time>b.Change_Time) 是這句的結果集吧

換個角度來想,其實這就話的意思就是在a表中大於b表的時間集中選最小的,很顯然當b表時間為

2011-12-5時a表中大於此值的最小值為2011-12-6;當b表時間為2011-6-7時a表中大於此值的最小值為2011-12-5,因此會有兩條記錄產生。執行下面語句看一下,將非常清晰

selecta.*,b.*fromChangea,Changeb
wherea.Change_Time=(selectMIN(c.Change_Time)fromChangecwherec.Change_Time>b.Change_Time);

結果集:
1 01 信息 2011-12-6 01 計算機 2011-12-5
2 01 計算機 2011-12-5 01 電子 2011-6-7

然後外層再選擇列,就是查出來的結果了。有問題再追問吧,望採納。

G. 求一個復雜的SQL語句

-- =============================================
-- Author: <Rocky,f_split>
-- Create date: <2010.11.4>
-- Description: <將傳入的參數以字元分割,並返回表格形式的參數所分割出來的值>

--select * from f_split('1,2,3,4,5,6',',')
-- =============================================
create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql)) --去掉字元中的空格
set @i=charindex(@StrSeprate,@SourceSql) --找分割符在字元中的位置
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>''
insert @temp values(@SourceSql)
return
end
GO
IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='test_4')
DROP TABLE test_4
GO

create table test_4
(
id varchar(20) not null,
value varchar(100) not null
)
insert into test_4 values('1008','A1|A2|A3')
insert into test_4 values('1009','B1|B2|B3|B4')

DECLARE @COUNT INT,@INDEX INT,@ID VARCHAR(20),@VALUE VARCHAR(100)

if object_id(N'[tempdb].dbo.[#TEMP_TEST_4_1]')>0
DROP TABLE #TEMP_TEST_4_1

if object_id(N'[tempdb].dbo.[#TEMP_TEST_4_2]')>0
DROP TABLE #TEMP_TEST_4_2

SELECT * INTO #TEMP_TEST_4_2 FROM test_4 WHERE 1=2

SELECT IDENTITY(INT,1,1) AS IDX ,* INTO #TEMP_TEST_4_1 FROM test_4
SELECT @COUNT=COUNT(*) FROM #TEMP_TEST_4_1

SET @INDEX=1
WHILE (@INDEX<=@COUNT)
BEGIN
SELECT @ID=ID,@VALUE=VALUE FROM #TEMP_TEST_4_1 WHERE IDX=@INDEX
INSERT INTO #TEMP_TEST_4_2 SELECT @ID,* FROM F_SPLIT(@VALUE,'|')
SET @INDEX=@INDEX+1
END

SELECT * FROM #TEMP_TEST_4_2

以上代碼經過測試,完全能滿足你的需求,請採納,謝謝!

H. SQL 復雜表查詢

看了頭暈,為何要用中文欄位呀,呵呵~

select 主表.*,工序表.工序名稱,作廢表.作廢名稱 from 主表
left 工序表 on 主表.工序代號=工序表.工序代號
left 作廢表 on 主表.作廢代號=作廢表.作廢代號
where 主表.工序代號 in(601,602)--你要查的錯誤工序代號,用逗號隔開,比如說601,602
and 主表.產品名稱 in(A01,B01)--你要查的產品名稱,用逗號隔開,比如說A01,B01

I. SQL復雜語句

你這里的A1,B1,C1三個條沒有任何條件直接連接嗎?E1,F1,G1也是無條件連接?

如果是我,習慣於這樣寫

select*fromA1
joinB1on條件
joinC1on條件
fulljoin(
select*
fromE1
joinF1on條件
joinG1on條件
)EFGon.....


另外如果A1,B1,C1三表連接具有一定的通用性,可以把select*fromA1,B1,C1做成視圖,用起來方便些,E1,F1,G1也一樣


我習慣上使用Join,和join的這張表有關的連接條件寫在on後面,用於過濾的條件或其他非連接條件寫在where裡面,這樣即使數據表很多也很清楚

J. 復雜sql語句查詢

selectid,name,isnull((selectSUM(金額)fromB表whereid=A表.idandbno=20),0)正常消費,isnull((selectSUM(金額)fromB表whereid=A表.idandbno=30),0)充值,(selecttop1餘額fromB表whereid=A表.idorderby時間desc)余額,(selectMAX(時間)fromB表whereid=A表.id)時間
fromA表

這樣看一下行不行