SQLコードを改善するには、条件が満たされたときに内部結合を使用する必要があります。私は現在、コード複製しています:SQLが条件を満たす場合に内部結合を実行する
@SystemMerge bit
if (@SystemMerge=1)
BEGIN
SELECT
.......
FROM myTable
INNER JOIN table ON table.param1=myTable.param1
INNER JOIN systemTable on systemTable.param2=myTable.param2
END
ELSE
BEGIN
SELECT
.......
FROM myTable
INNER JOIN table ON table.param1=myTable.param1
END
をし、私はこのような方法でそれをしたいと思っ:
@SystemMerge bit
BEGIN
SELECT
.......
FROM myTable
INNER JOIN table ON table.param1=myTable.param1
***//the next 4 lines is not working, but this pseudo of what i want:***
if (@SystemMerge=1)
begin
INNER JOIN systemTable on systemTable.param2=myTable.param2
end
編集: 溶液(@Damien_The_Unbelieverのおかげで):
LEFT JOIN systemTable ON systemTable.param2=myTable.param2
WHERE
((@SystemMerge=1 AND systemTable.param2 is not null)
OR
(@SystemMerge=0 OR @SystemMerge is null))
私たちには動作しないコードを示してください。あなたが手に入れようとしているエラーは何ではないのですか?おそらくいくつかのデータの例 –
動的SQLを使用したい場合があります – Elmer
条件に基づいて動的クエリを作成し、後でそのクエリをEXEC(クエリ)で実行できます。 –