PDA

View Full Version : Viết câu lệnh SQL như thế nào đây?



chungpn
03-12-2008, 22:49
Chào tất cả các bạn, mình có 1 bảng dữ liệu như thế này:

EmpCode DeptCode FullName N01 N02 N03 N04 N05
---------------------------------------------------------------------------------------
QT351 KHHC ABC X X Y X C
QT555 KTMB GHJ Y Z X C X
QT351 KHHC ABC X X Y X C
QT555 KTMB GHJ Y Z X C X
--------------------------------------------------------------------------------------
Bạn nào có thể viết giúp mình lệnh SQL trả về kết quả như bảng bên dưới được không?

EmpCode DeptCode FullName X Y Z C
---------------------------------------------------------------------------------------
QT351 KHHC ABC 6 2 0 2
QT555 KTMB GHJ 4 2 2 2
--------------------------------------------------------------------------------------
Xin cám ơn!

lionking05
04-12-2008, 09:09
Có mấy cái hỏi lại bạn nè.
1. X,Y,Z,C là động hay tĩnh luôn?
2. 6,2,0,2 là động hay tĩnh?
Nếu động thì sử dụng cursor còn tĩnh thì sử dụng select ... as là được mà. Nếu được thì gởi cho mình table mình viết cho :)

chungpn
04-12-2008, 10:06
select EmpCode,DeptCode,FullName,
sum(case when N01 = 'X' then 1 else 0 end + case when N02 ='X' then 1 else 0 end
+ case when N03 ='X' then 1 else 0 end + case when N04 ='X' then 1 else 0 end
+ case when N05 ='X' then 1 else 0 end)as X,
sum(case when N01 = 'Y' then 1 else 0 end
+ case when N02 ='Y' then 1 else 0 end
+ case when N03 ='Y' then 1 else 0 end +
case when N04 ='Y' then 1 else 0 end + case when N05 ='Y' then 1 else 0 end)as Y,
sum(case when N01 = 'Z' then 1 else 0 end +
case when N02 ='Z' then 1 else 0 end
+ case when N03 ='Z' then 1 else 0 end
+ case when N04 ='Z' then 1 else 0 end
+ case when N05 ='Z' then 1 else 0 end)as Z,
sum(case when N01 = 'C' then 1 else 0 end
+ case when N02 ='C' then 1 else 0 end
+ case when N03 ='C' then 1 else 0 end
+ case when N04 ='C' then 1 else 0 end
+ case when N05 ='C' then 1 else 0 end)as C
from table
group by EmpCode,DeptCode,FullName

hvcong
04-12-2008, 10:12
Đề bài bạn đưa thế này thì chỉ bạn làm được thôi :(

nguyenvuong89
08-12-2008, 20:01
bạn ơi viết thế này nè
select top 2 * from TABLE_NAME

wvncoltd
09-12-2008, 14:49
Pó tay cái ông này, đưa ra câu hỏi, chả ai hiểu là muốn hỏi gì, hic

thitkhohotvit
09-12-2008, 16:04
Dễ ẹc, hỏi vậy thì có câu trả lời đây

select 'QT351' EmpCode, 'KHHC' DeptCode, 'ABC' FullName, 6 X, 2 Y, 0 Z, 2 C
union
select 'QT555' EmpCode, 'KTMB' DeptCode, 'GHJ' FullName, 4 X, 2 Y, 2 Z, 2 C

^_^