-3

私はSQLクエリに取り組んでいます。確認して解決策を教えてください

テーブルの以下のタスクの簡単な詳細を見つけてください

表 1 'tbl_SuperAdmin'提出済み

例のようなデータ

s_id name age gtc.......
1     abc  23 .........
2     cda  42 ..........

別のテーブル 2 を持つ'tbl_Renewal'

renewalid  renname date supid   Payed etc......
1          first   -     1        1    ........
2          first   -     2        1    ........
3          second -      1        0     ........
4          second -      1        1     ........
5          third-        1        1     ........

クエリは select *from tbl_superadmin as a inner join tbl_Renewal as b on a.s_id=b.supid

結果は

 s_id name age gtc....... renewalid  renname date supid   Payed etc.......
1     abc  23 .............1        first     -      1         1    ........
2     cda  42 .............2       first      -      2         1    ........
1     abc  23 .............3       second     -      1        0     ........
1     abc  23 .............4       second     -      1        1     ........
1     abc  23 .............5       third      -      1        1     ........ 

ここで私はどのように支払ったか= 1とrenewalid descが必要で、s_idが1回以上繰り返されない必要はありません

私の結果を次のように表示したい

  s_id name age gtc....... renewalid  renname date supid   Payed etc.......
    1     abc  23 .............5       third      -      1        1     ........ 
    2     cda  42 .............2       first      -      2         1    ........

この結果のように、体を助けてください

ありがとう

4

2 に答える 2

1

重複を削除するには、 Windows Functionを使用する必要があります。

With cte as 
(
 select *,row_number() over(partition by s_id order by renewalid desc )rn
 from tbl_superadmin as a 
 inner join tbl_Renewal as b 
 on a.s_id=b.supid
)
Select * from cte where rn=1

SQL FIDDLEでのデモ

アップデート

;With cte as 
( 
 select *,row_number() over(partition by s_id order by renewalid desc )rn 
 from alz_SuperAdmin as a inner join alz_Renewal as b on a.s_id=b.supid
)
select top 2 CONVERT(varchar(6),a.lastdate,6) as lastdate,
(select name from alz_states where ID=a.joblocation ) as locat,
from alz_jobpost as a
inner join 
(Select col1,col2,col3.... from cte where rn=1 )ct
on ct.commonColumn=a.CommonColumn  and 
ct.Product in 
(Select query)
于 2013-03-22T11:10:49.750 に答える
0

クエリで GROUP BY と ORDER を使用する必要があります。このようなもの:

SELECT 
    * 
FROM 
    tbl_SuperAdmin AS a
INNER JOIN 
    tbl_Renewal AS b 
ON 
    a.s_id = b.supid
GROUP BY
    a.s_id
ORDER BY
    b.renewalid
DESC
于 2013-03-22T10:54:25.103 に答える