2017-01-27 13 views
3

говорят, что у меня есть таблица, которая должна использоваться как таблица фильтров (таблица A) и другая, которая считывает данные из linkedserver (таблица б). Результат фильтрации будет генерировать третью таблицу, дело в том, что я не могу понять, как правильно применить эту фильтрацию. Я нашел ссылку по этой ссылке: Reference, но он не на борту, что я ищу. См следующим образом:Как использовать одну таблицу в качестве фильтра из другого и сгенерировать новую в sql

Таблица A - тип данных в столбцах Bit

|Field1 |Field2 |Field3 |Field4 |CustomerCode| |-------|-------|-------|-------|-------------| | 1 | 0 | 0 | 1 | c001 |

Таблица B - тип данных в столбцах VARCHAR

|FieldA |FieldB |FieldC |FieldD |CustomerCode | |------- |-------|-------|-------|-------------| | aaaaa | null | ccccc |ddddd | c001 |

Тогда что я ищу это что-то вроде этого:

IF tableA.Field1 = 1 THEN NOT EMPTY tableB.FieldA Do an INSERT INTO tableC FieldI VALUES(tableB.FieldA) ELSE INSERT INTO tableC FieldI VALUES ('No Value Found')

Таким образом, это гарантирует, что для всех полей из таблицы A равны 1, , тогда для данных таблицы B не может быть NULL, если данные являются нулевыми, просто вставьте это сообщение: «No Value Found»; если данные не являются нулевыми, то просто поместите данные из таблицы B в эту таблицу C. Я начинаю с SQL, и в основном я пропускаю то, что может облегчить переваривание этой проблемы.

Благодаря

+1

Какова связь между таблицей A и таблицей B? Я его не вижу. –

+1

Кажется, что вы хотите условно вставить записи из таблицы B в таблицу C, но используя информацию в таблице A. Для того, чтобы мы могли вам помочь, вам нужно рассказать нам, как таблицы A и B _related_. –

+0

Очень важный факт, я сделал обновление сейчас. Спасибо – Antonio

ответ

2

Используйте INSERT INTO tableC ... SELECT FROM. Что-то вроде этого должно работать:

INSERT INTO tableC 
SELECT COALESCE(t1.FieldA, 'No Value Found'), 
     COALESCE(t1.FieldB, 'No Value Found'), 
     COALESCE(t1.FieldC, 'No Value Found'), 
     COALESCE(t1.FieldD, 'No Value Found') 
FROM TableB t1 
INNER JOIN TableA t2 
    ON t1.CustomerCode = t2.CustomerCode 
WHERE t2.Field1 = 1 AND 
     t2.Field2 = 1 AND 
     t2.Field3 = 1 AND 
     t2.Field4 = 1 
+0

Спасибо за усилие Тим, просто догадываясь, что при утверждении, он должен сказать «t2.Field1 ....» вместо t1; Я пробовал ваш метод, но все еще не делаю вставки в tableC – Antonio

+0

', но все еще не делает вставку в tableC' ... что на самом деле происходит? –

+0

Здравствуйте, извините за задержку. Я проработал с примером, который вы предоставили, он правильно выполняет фильтрацию. – Antonio

 Смежные вопросы

  • Нет связанных вопросов^_^