2013-07-09 34 views
0

我面臨的問題創造查詢這樣的多個結果:SQL查詢來在單冠軍,但

REF_CORP_ID | DEPARTMENT_NAME | IS_APPROVED | APPROVED_BY | APPROVED_DATETIME  |APPROVAL_FROM | CREATED_BY 
2   | Sales   | 1   | 1   | 2013-07-05 18:19:31.917 | 2   | 1 
      |     | 1   | 1   | 2013-07-05 18:19:31.917 | 2   | 1 
      |     | 1   | 1   | 2013-07-05 18:19:31.917 | 2   | 1 
1   | IT    | 1   | 1   | 2013-07-05 18:05:21.170 | 2   | 1 
      |     | 1   | 1   | 2013-07-05 18:05:21.170 | 2   | 1 
      |     | 1   | 1   | 2013-07-05 18:05:21.170 | 2   | 1 
3   | Testing   | 0   | 1   | 2013-07-05 18:32:02.207 | 1   | 1 
      |     | 0   | 1   | 2013-07-05 18:32:31.980 | 1   | 1 
4   | HR    | 1   | 1   | 2013-07-08 11:14:42.817 | 2   | 1 
      |     | 1   | 1   | 2013-07-08 11:14:42.817 | 2   | 1 
+0

查詢的格式化應該像 – user1920832

回答

1

正如SELECT [REF_CORP_ID] + ' ' + [DEPARTMENT] + ' ' + [NAME] + ' ' + [IS_APPROVED] + ' ' + [APPROVED_BY] FROM Table...

+0

以上請編輯問題 – user1920832

0

嘗試此查詢,

select 
MAX(ISNULL(REF_CORP_ID,'')), 
MAX(ISNULL(DEPARTMENT_NAME,'')), 
IS_APPROVED, 
APPROVED_BY, 
APPROVED_DATETIME, 
APPROVAL_FROM, 
CREATED_BY 
FROM TABLE1 
GROUP BY IS_APPROVED,APPROVED_BY,APPROVED_DATETIME, APPROVAL_FROM,CREATED_BY 

SQL FIDDLE

請參閱本圖片

enter image description here

4

試試這個

;with cte as 
( 
    select ROW_NUMBER() OVER(Partition by [DEPARTMENT NAME] order by REF_CORP_ID) as rno, 

     [REF_CORP_ID] , 
     [DEPARTMENT] , 
     [IS_APPROVED], 
     [APPROVED_BY], 
     [APPROVED_DATETIME], 
     [APPROVAL_FROM], 
     [CREATED_BY] 
FROM Table 
) 

SELECT  [REF_CORP_ID] , 
      CASE rno WHEN 1 THEN [DEPARTMENT] ELSE '' END AS 'DEPARTMENT NAME', 
      [IS_APPROVED], 
      [APPROVED_BY], 
      [APPROVED_DATETIME], 
      [APPROVAL_FROM], 
      [CREATED_BY] 
FROM cte 
+0

由於其工作 – user1920832

0

嘗試這個

create table #temp 
        (
         REF_CORP_ID varchar(20), 
         DEPARTMENT varchar(20), 
         IS_APPROVED bit, 
         APPROVED_BY smallint, 
         APPROVED_DATETIME datetime, 
         APPROVAL_FROM smallint, 
         CREATED_BY smallint 
        ) 
create table #temp2 
        ( ROW    int, 
         REF_CORP_ID varchar(20), 
         DEPARTMENT varchar(20), 
         IS_APPROVED bit, 
         APPROVED_BY smallint, 
         APPROVED_DATETIME datetime, 
         APPROVAL_FROM smallint, 
         CREATED_BY smallint 
        ) 

insert into #temp (REF_CORP_ID, DEPARTMENT, IS_APPROVED, APPROVED_BY, APPROVED_DATETIME, APPROVAL_FROM, CREATED_BY) 
select '2', 'Sales', 1, 1 , '2013-07-05 18:19:31.917', 2 , 1     

insert into #temp 
select '2', 'Sales', 1, 1 , '2013-07-05 18:19:31.917', 2 , 1 

insert into #temp 
select '2', 'Sales', 1, 1 , '2013-07-05 18:19:31.917', 2 , 1 

insert into #temp 
select '1', 'IT', 1, 1 , '2013-07-05 18:05:21.170', 2 , 1     

insert into #temp 
select '1', 'IT', 1, 1 , '2013-07-05 18:05:21.170', 2 , 1     

insert into #temp 
select '1', 'IT', 1, 1 , '2013-07-05 18:05:21.170', 2 , 1     

insert into #temp 
select '3', 'Testing', 0, 1 , '2013-07-05 18:32:02.207', 2 , 1  

insert into #temp 
select '3', 'Testing', 0, 1 , '2013-07-05 18:32:02.207', 2 , 1       

insert into #temp 
select '4', 'HR', 1, 1 , '2013-07-08 11:14:42.817', 2 , 1       

insert into #temp 
select '4', 'HR', 1, 1 , '2013-07-08 11:14:42.817', 2 , 1       





insert into #temp2 
select ROW_NUMBER() OVER(PARTITION BY REF_CORP_ID ORDER BY REF_CORP_ID DESC) AS Row, 
     REF_CORP_ID, 
     DEPARTMENT 
     ,IS_APPROVED 
     ,APPROVED_BY 
     ,APPROVED_DATETIME 
     ,APPROVAL_FROM 
     ,CREATED_BY 
from #temp 



select 
     (CASE WHEN row >1 THEN '' ELSE REF_CORP_ID END)REF_CORP_ID, 
     (CASE WHEN row >1 THEN '' ELSE DEPARTMENT END)DEPARTMENT, 
     IS_APPROVED 
     ,APPROVED_BY 
     ,APPROVED_DATETIME 
     ,APPROVAL_FROM 
     ,CREATED_BY 

from #temp2 



drop table #temp 
drop table #temp2