A. 用sql語句 怎樣實現 相同人員的信息並排顯示
創建測試表及數據
createtable人員代碼表
(代碼varchar(3),
姓名varchar(10))
createtable項目表
(代碼varchar(4),
項目varchar(20))
createtable人員項目表
(代碼1varchar(3),
代碼2varchar(4))
insertinto人員代碼表values('001','張三')
insertinto人員代碼表values('002','李四')
insertinto人員代碼表values('00x','王五')
insertinto項目表values('x001','基本工資')
insertinto項目表values('x002','崗位津貼')
insertinto項目表values('x003','出差補助')
insertinto人員項目表values('001','x001')
insertinto人員項目表values('001','x002')
insertinto人員項目表values('001','x003')
insertinto人員項目表values('002','x001')
insertinto人員項目表values('002','x002')
執行
declare@sqlvarchar(4000)
set@sql='select[姓名]'
select@sql=@sql+',max(case[項目]when'''+[項目]+'''then[項目]end)as
['+[項目]+']'
from(selectdistinct[項目]from[test])asa
select@sql=@sql+'from(selecta.姓名,b.項目from人員代碼表a,項目表b,人員項目表cwherea.代碼=c.代碼1andb.代碼=c.代碼2)testgroupby[姓名]'
exec(@sql)
結果
B. 在pl/sql里建一表,其中有些欄位的值要限定,比如項目名稱被限定為:項目1,項目2,項目3;怎麼寫代碼啊
建立一個取值范圍表(碼表)作為主表,然後再建立你需要的表(作為從表)。在建表時需要限定的欄位作為外鍵與碼表的欄位相互關聯。這樣每次修改表的這些欄位時,自動去校驗該值是否碼表中存在的值。
C. SQL SERVER~~~
1.建表
create table 運動員(運動員編號 varchar(4) primary key ,運動員姓名 nvarchar(10) not null,運動員性別 nvarchar(1),所屬系別 nvarchar(20) not null)
create table 項目(項目編號 varchar(4) primary key,項目名稱 nvarchar(20),項目比賽地點 nvarchar(50))
create table 成績(運動員編號 varchar(4) references 運動員(運動員編號) , 項目編號 varchar(4) references 項目(項目編號) , 積分 int ,primary key (運動員編號,項目編號) )
2.插入數據
insert into 運動員 values ('1001', '李明','男','計算機系')
insert into 運動員 values ('1002', '張三','男','電信學院')
insert into 運動員 values ('1003', '李四','男','計算機系')
insert into 運動員 values ('1004', '王二','男','物理學院')
insert into 項目 values ('x001','男子五千米','一操場')
insert into 項目 values ('x002','男子標槍','二操場')
insert into 項目 values ('x003','女子三千米','一操場')
insert into 成績 values ('1001', 'x001',6)
insert into 成績 values ('1002', 'x001',4)
insert into 成績 values ('1003', 'x001',2)
insert into 成績 values ('1001', 'x003',4)
insert into 成績 values ('1002', 'x003',6)
3.查詢
(1)
select a.項目名稱 from 項目 a left join 成績 b on a.項目編號 =b.項目編號 where b.項目編號 is null
(2)
select c.項目名稱 from 運動員 a,成績 b,項目 c where a.所屬系別 ='電信學院' and a.運動員編號 =b.運動員編號 and b.項目編號 =c.項目編號
(3)
select a.運動員姓名 from 運動員 a where a.運動員編號 in (select top 1 b.運動員編號 from 成績 b,項目 c where b.項目編號 =c.項目編號 and c.項目名稱 ='男子五千米' order by b.積分 desc )
4.違禁修改
update a set a.積分 =0 from 成績 a,運動員 b where a.運動員編號 =b.運動員編號 and b.運動員姓名 ='張三'
說明:這裡面有很多地方,如果用代號會更明確,代碼更少。如實際應用時,處罰張三,會先知道他的編號,就只要這樣寫:
update a set a.積分 =0 from 成績 a where a.運動員編號 ='1002'
D. 【資料庫考試】sql查詢語句,請進
定語
供應工程J1
零件為紅色的
名詞
1. 工程號JNO
E. SQL語句怎樣使查詢同一表同一列多條數據分列顯示
declare @sql varchar(8000)
set @sql = 'select 編碼,名稱'
select @sql = @sql+', max(case [項目序號] when '''+cast(項目序號 as varchar)+''' then 數額 else 0 end ) AS [項目序號'+cast(項目序號 as varchar)+']'
from (select distinct 項目序號 from 表名) as a
set @sql = @sql +' from 表名 group by 編碼,名稱'
select @sql
exec (@sql)