Я хотел получить отдельные строки из двух столбцов на основе определенных критериев после объединения нескольких таблиц.Чтобы объяснить это на примере, у меня есть следующее:
SELECT c.column1, c.column2, d.column3, d.column4
FROM table1 a
JOIN table2 b ON a.id=b.id
JOIN table3 c ON b.tabid = c.tabid
LEFT JOIN table4 d ON c.pmid=d.pmid
WHERE a.id = @id
В случае, когда column1 и column2 не равны NULL, я хочу, чтобы два из них были получены как
SELECT c.column1, c.column2
FROM table1 a
JOIN table2 b ON a.id=b.id
JOIN table3 c ON b.tabid = c.tabid
LEFT JOIN table4 d ON c.pmid=d.pmid
WHERE a.id = @id
В противном случае, яхотел бы иметь
SELECT d.column3, d.column4
FROM table1 a
JOIN table2 b ON a.id=b.id
JOIN table3 c ON b.tabid = c.tabid
LEFT JOIN table4 d ON c.pmid=d.pmid
WHERE a.id = @id
Я бы использовал предложение IF с функцией COUNT, чтобы сначала увидеть отдельно, являются ли столбцы нулевыми или нет, затем использовал бы простой оператор SELECT для извлечения.Но это будет тройным усилием чтения из одной и той же таблицы 3 раза (чтобы проверить счетчики каждого столбца> 0 или нет; в случае, если оба истинны, выбрать из этих столбцов).Я считаю, что это может быть улучшено лучше.
Я также рассматривал возможность использования двух отдельных общих табличных выражений для использования с CASE.Но закончилось синтаксической ошибкой.
Любое руководство будет оценено.Спасибо!