sql >> データベース >  >> RDS >> Sqlserver

結果セットで値を繰り返すための空白を表示します

    ROW_NUMBER OVER PARTITION BYを追加して、既存のクエリをCTEでラップします 列。値のグループごとにRNが作成されます。外部クエリでは、CASEを使用して、GRP_RN =1の値を選択し、それ以外の場合は空の文字列を選択します。

    WITH CTE AS 
    (
        Select  distinct top 100000 
            o.EventSetName,       
            o.EventSetDisplay,
            o.EventSetDescription,
            o.ChildSetName,
            ROW_NUMBER() Over (Order By f.ChildSetName) RN,
            f.DocumentDispSequence,
            f.SectionDispSequence,
            o.ObsSetDispSequence,
            null  as NullColumnNeedsName,
            ROW_NUMBER() OVER (PARTITION BY o.EventSetName, o.EventSetDisplay,o.EventSetDescription ORDER BY f.ChildSetName) GRP_RN
        From   ##ObsSetLevel o,
        INNER JOIN ##Final f ON f.ChildSetName = o.EventSetName and o.EventSetName = @variableName
    )
    SELECT
        CASE WHEN GRP_RN = 1 THEN o.EventSetName ELSE '' AS EventSetName,
        CASE WHEN GRP_RN = 1 THEN o.EventSetDisplay ELSE '' AS EventSetDisplay,
        CASE WHEN GRP_RN = 1 THEN o.EventSetDescription ELSE '' AS EventSetDescription,
        other columns
    FROM CTE  
    Order By RN asc, DocumentDispSequence asc, SectionDispSequence asc, o.ObsSetDispSequence asc
    

    PS:古いスタイルの結合の使用も修正しました。その使用法は、SQL-92標準の導入により、20年以上前に時代遅れになっています。 これらの使用は避けてください。




    1. SELECTを使用してUPDATEを実行すると、各行または選択されたすべてのレコードがロックされますか

    2. SQL Serverデータベースにauto_increment主キーを追加するにはどうすればよいですか?

    3. PHPを使用してMySQLデータベースからデータを削除するフォーム

    4. Vertx JDBCクライアントでSQLクエリのパラメータソースとしてリストを使用するにはどうすればよいですか?