|  | 
	                
  
    |  |  
    | 
        
        ขอสอบถามเรื่องการ Group By ใน sql server หน่อยครับ     |  
    |  |  
 
	
		|  |  |  |  |  
		|  |  | 
          
            | ถามเรื่องการ Group By หน่อยครับ 
 ผมต้องการ select row ที่มี seq น้อยที่สุดของแต่ละ id_member ครับ
 
 ถ้า mysql เขียนอย่างงี้อ่ะครับ
 
 Code (SQL)
 
 
SELECT 
      * 
    FROM
      (SELECT 
        * 
      FROM
        member_pic 
      ORDER BY seq ASC) c 
    GROUP BY id_member
 แต่ sql server จะต้องเขียนยังไงครับ
 
 ผมลอง
 
 Code (SQL)
 
 
SELECT  id_member, picture_name, static_name, type, min(id_picture), min(seq)
      FROM
        member_pic 
	   GROUP BY id_member
 มันก็จะติด picture_name, static_name, type ที่ไม่ได้ group by เลย error
 
 มันจะต้องทำยังไงอ่ะครับ หรือใช้วิธีอื่น
 
 
  
 
 
 Tag : .NET, Ms SQL Server 2012, Web (ASP.NET), C#
 
 
 |  
            | 
 ประวัติการแก้ไข
 2015-02-26 16:49:31
 |  
            | 
              
                |  |  |  |  
                |  | 
                    
                      | Date :
                          2015-02-26 16:48:38 | By :
                          เด็กโง่ | View :
                          1137 | Reply :
                          6 |  |  |  
                |  |  |  |  |  
            |  |  
		            |  |  
		|  |  |  |  |  
  
    | 
 
 
 
 
        
          |  |  |  |  |  
          |  |  | 
            
              | แบบนี้พอได้ไหมครับ ใช้ Sub Query 
 Code (SQL)
 
 
SELECT  id_member, picture_name, static_name, type,id_picture, seq
FROM member_pic as m1 
where id_member=((SELECT  TOP 1 id_member
FROM member_pic as m2 where m2.id_member=m1.id_member group by id_member,seq order by seq))
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2015-02-26 17:40:46 | By :
                            Thaidevelopment.NET |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | Code (SQL) 
 
DECLARE @member_pic TABLE (id_member int, picture_name varchar(100), static_name varchar(100), type varchar(4), seq int)
INSERT INTO @member_pic 
VALUES  (3,'3a0','3b0','3t0',1),(3,'3a1','3b1','3t0',2),
        (3,'3a2','3b2','3t0',3),(2,'2a0','2b0','2t0',1),
        (2,'2a1','2b1','2t0',3),(2,'2a2','2b2','2t0',2),
        (1,'1a0','2a0','1t0',2),(1,'1a1','1a1','1t0',1)
        
SELECT xOne.*, yOne.* FROM @member_pic xOne
CROSS APPLY (SELECT TOP 1 * FROM @member_pic yOne WHERE yOne.id_member= xOne.id_member ORDER BY yOne.seq asc) yOne 
WHERE xOne.seq = yOne.seq
 คุณลองสังเกตุข้อแตกต่างระหว่างคำสั่งเสีย  CROSS APPLY VS Sub Query
 
 1.
 2.
 ...
 ...
 
 
 คุณจะได้มากกว่าสิ่งที่คุณต้องการ ฟันธง ชักช้าท้องแน่นอน
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2015-02-27 09:04:17 | By :
                            หน้าฮี |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | จาก #NO 5 ข้อสังเกตุ หนึ่งในหลายฯข้อ นั่นคือ ลาก่อนคำสั่ง Group By
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2015-02-27 09:11:51 | By :
                            หน้าฮี |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  |  |