1

SQLでIFELSEステートメントを使用すると状況が発生します。

    @searchString nvarchar(50),
    @languageId int, 
    @count int,
    @id int
IF(@count IS NOT NULL)
    SELECT TOP (@count) Id, value
    FROM TABLE1
        WHERE  (Id IN
        (SELECT Id
    FROM      TABLE2
    WHERE   (Id = @id))) and languageId = @languageId AND value LIKE '%' + @searchString + '%'
ORDER BY value

ELSE
    SELECT Id, value
    FROM TABLE1
        WHERE  (Id IN
        (SELECT Id
        FROM      TABLE2
    WHERE   (Id = @id))) and languageId = @languageId AND value LIKE '%' + @searchString + '%'
ORDER BY value

count(*)over()(または同様のもの)を使用してすべての行の数を返したい(今のところTOPカウントレコードのみを返すため)ここで答えられるように: TOP*でレコードの総数を返す方法選択する

ただし、すべてのインスタンスに対してこの値を返すわけではありませんが、カウントを1回だけ返したいと思います。

1つのクエリでこれを行う方法はありますか、またはこれに対して別のクエリを作成する必要がありますか?

ヒントをいただければ幸いです。

編集:SQL Server2008r2を使用します。

4

1 に答える 1

0

スクリプトを使用した例として、INNERJOINを使用することをお勧めします:{SCRIPT

選択する

                l.localite_id,
                p.patient_id,
                p.patient_date_naissance, 
                p.patient_gsm, p.patient_tel

FROM患者pINNERJOIN localite l ON l.localite_id = p.localite_id INNER JOIN ville v ON v.ville_id = l.ville_id INNER JOIN gouvernorat g ON v.gouv_id = g.gouv_id INNER JOIN pays pays ON pays.pays_id=g。 pays_id

IF NEQ#patient_gsm#-1 WHERE p.patient_gsm like#patient_gsm#

AND p.patient_code like#patient_code#

ENDIF

終わり

}

于 2012-11-26T08:53:31.777 に答える