① 請朋友們幫忙寫出sql語句.感謝!在線等!!
--建立測試數據
create table tb
(姓名 varchar(20) null,
費用類型 varchar(20) null,
費用金額 decimal null
)
go
insert into tb
select 'XM1','交通費',50
union all
select 'XM1','交通費',40
union all
select 'XM1','餐飲費',60
union all
select 'XM1','餐飲費',60
union all
select 'XM1','辦公費',30
union all
select 'XM1','辦公費',30
union all
select 'XM2','辦公費',30
union all
select 'XM2','辦公費',60
go
--查詢語句
declare @sql varchar(8000)
set @sql = 'select 姓名 '
select @sql = @sql + ' , sum(case 費用類型 when ''' +費用類型+ ''' then 費用金額 else 0 end) [' + 費用類型 + ']'
from (select distinct 費用類型 from tb) as a
set @sql = @sql + ' from tb group by 姓名'
--print (@sql)
exec(@sql)
--------------------結果集------------------------------
姓名 辦公費 餐飲費 交通費
-------------------- ---------------------------------------- ---------------------------------------- ----------------------------------------
XM1 60 120 90
XM2 90 0 0
--刪除測試數據
drop table tb
② 關於SQL 求幫忙寫個語句 !
createtable#table(Namenvarchar(50),[date]nvarchar(500))
insertinto#tablevalues('小明','1,2,3,4,5')
---------------------------------------------------------------
declare@datenvarchar(500)
set@date=(select[date]from#table)
print@date
createtable#t(tnvarchar(50))
while(1=1)
begin
if(Charindex(',',@date)=0)
begin
insertinto#tvalues(@date)
break
end
insertinto#tvalues(Substring(@date,1,Charindex(',',@date)-1))
set@date=Right(@date,Len(@date)-Charindex(',',@date))
end
selectNameas姓名,
STUFF((select','+t+'號'from#tforxmlpath('')),1,1,'')as遲到日期
from#table
--droptable#t
③ 幫我寫個sql語句,很簡單的
我來回答,這個表是誰給你建的?你應該揍他一頓。如果是你自己建的,面壁去吧。
應該有兩個表:
1、省份表
欄位名 類型 長度 備注
Pid int 4 自增變數,主鍵,省份id
PName char 20 省份名稱
2、城市表欄位名 類型 長度 備注
Cid int 4 自增變數,主鍵
CName char 20 城市名稱
Pid int 4 城市所屬的省份id
對於前面的那些數據,應該是這樣的:
1、省份表(ProvinceTable)
Pid PName
1 廣東省
2 湖南省
(更多的,再添加)
2、城市表(CityTable)
Cid CName Pid
1 廣州市 1
2 深圳市 1
3 長沙市 2
4 岳陽市 2
這樣的表結構才有可能實現你要的效果。
把省份表中的名稱和id放到選擇省份列表中,這樣:
<select name="Province" onclick="">
<option value="1">廣東省</option>
<option value="2">湖南省</option>
</select>
然後在onclick事件中提交表單,或者使用Ajax技術向伺服器中發送選擇的省份id。
這時候,得到省份所有城市列表的sql語句為(假設我們選擇廣東省):
select * from citytable where pid=1
歡迎訪問我的論壇:
http://www.chinesebloger.com
期待您的支持:) 9471希望對你有幫助!
④ 請求前輩幫忙寫一條SQL語句,實現下列效果!
樓上回答是可以的,只是oracle的語法,mysql中沒有decode,只能用case when,語句如下:
SELECT Goodsname 物品,
SUM(CASE WHEN Cls = '進' THEN Qty ELSE 0 END) 進貨數量,
SUM(CASE WHEN Cls = '出' THEN Qty ELSE 0 END) 出貨數量,
SUM(CASE WHEN Cls = '進' THEN Qty ELSE -1 * Qty END) 當前存庫
FROM Goods
GROUP BY Goodsname;
⑤ 幫幫寫個sql語句
你的語句已經是最簡單的了, 有時候語句不是越簡單越好, 還要考慮語句的執行效率, 多寫幾句話是很必要的, 精煉的語句前提是不影響正常功能, 效果相同情況下的精煉, 謝謝
⑥ 請大家幫忙寫一個創建sql表的語句!
通過sql語句建立表結構如下:
create table course
(cno varchar(20) not null primary key,
cname varchar(20) not null,
name varchar(20) null)
go
create table score
( id int identity(1,1)not null primary key,
sno varchar(20) not null,
cno varchar(20) not null
constraint fk_cno foreign key references course(cno),
score int null)
⑦ 求大佬幫忙寫個SQL語句
(1)你在你的語句中應該不會出現連個相同的行吧(畢竟一個人不能關注另一個人兩次),比如兩行同樣都是(1,2),也就是說distinct可以不需要寫(1關注了2,關注了3,但是在to_id=2的時候from_id=1的只有一個)。
(2)如果沒有最後一個條件,也就是既關注a有關注b的,那麼一條語句就可以,現在則需要寫兩遍,其實用編號(開窗)來做也可以,不過如果數據量很大的話,開窗就會很慢,所以如果數據量大的話,不建議這么做,
分組表示group by,slt表示selelct,fm表示from
語句我都寫出來,你自己試驗下:
關注a用戶的用戶數目、關注b用戶的用戶數目:
slt to_id,count(*) fm table whe to_id='a' or to_id='b' 分組 to_id
關注a用戶的用戶數目、關注b用戶的用戶數目、既關注了a用戶又關注了b用戶的用戶數目:
slt 開窗函數(partition by from_id order by to_id) BH,to_id fm table where to_id='a' or to_id='b'
解釋一下:上面語句的結果中,凡是有BH=2的就是同時關注了a和b的(這個開窗自己查一下,這里不性能寫,寫了發不上來,是oracle的rownum開窗,如果你不是oracle資料庫,那麼查一查相關的函數)
上面整個語句起一個別名AA
slt BH,to_id,count(*) T fm AA 分組 cube (BH,to_id ) having BH<>1
說明一下:查詢結果是按照BH和to_id分組,BH有兩個值1和2,to_id有兩個值a和b,再加上cube,那麼結果應該是
BH to_id T(count的別名)
1 a XX
1 XX
a XX
1 b xx
b xx
2 b XXX(這兩組XXX的應該是相等的)
2 XXX(這兩組XXX的應該是相等的)
然後篩選BH不等於1的,那麼結果就是:
BH to_id T
a XX
b xx
2 b XXX
2 XXX
因為下面兩個是相等的,就是都是同時關注a和b的人的總和,所以用哪個都行,如果想只留一個,那麼就在having的後面加上一句 or (BH<>2 and to_id<>b)
也可以用to_id is null,不過這樣留下的就是上面那行,不過結果是一樣的。
⑧ 寫SQL語句 來幫忙
1)select A.姓名
from (select * from S) A
inner jion (select * from SC) B on A.學號=B.學號
inner join (select * from C) D on B.課程號=D.課程號
where D.選修課程='1' and D.選修課程='2'
2)select A.姓名,D.課程名
from (select * from S) A
inner jion (select * from SC) B on A.學號=B.學號
inner join (select * from C) D on B.課程號=D.課程號
3)select A.姓名
from (select * from S) A
inner jion (select * from SC) B on A.學號=B.學號
where B.成績<60
4)select A.系名
(select 系名,count(性別) as 人數
from S where 性別='女' group by 系名) A
where A.人數>80
5)update S set 年齡='22' where 學號='2012511'
6)CREATE VIEW Aname AS
select *
from (select * from S where 系名='信息系') A
inner jion (select * from SC where 成績>90) B on A.學號=B.學號
inner join (select * from C where 選修課程號='1') D on B.課程號=D.課程號