Chcę dobry sposób, aby poprawić mój kod SQL, muszę użyć sprzężenia wewnętrznego, gdy warunek jest spełniony. Ja obecnie replikuje kod:SQL do wewnętrznego dołączyć, jeśli warunek spełnione
@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
i chciałbym zrobić to w taki sposób, jak to:
@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
edit: roztworu (dzięki @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))
pokaż nam kod, który nie działa. dlaczego to nie działa, jaki jest twój błąd? może przykład niektórych danych –
Możesz użyć dynamicznego sql – Elmer
Możesz zbudować dynamiczne zapytanie na podstawie warunku i wykonać to zapytanie później za pomocą EXEC (zapytanie). –