Вы должны записать файл в режиме добавления, а не в режиме записи. Ниже приведен правильный способ
with open('main.csv', 'a', encoding='utf-8') as f:
out.to_csv(f, index=False)
для удаления дубликатов, см. Приведенный ниже вопрос
Удаление дубликаты строк из CSV-файла с использованием скрипта Python
Вот как вы можете решить эту проблему, используя одно предложение WHERE
:
WHERE (@myParm = value1 AND MyColumn IS NULL)
OR (@myParm = value2 AND MyColumn IS NOT NULL)
OR (@myParm = value3)
Наивное использование оператора CASE не работает , так как это я имею в виду следующее:
SELECT Field1, Field2 FROM MyTable
WHERE CASE @myParam
WHEN value1 THEN MyColumn IS NULL
WHEN value2 THEN MyColumn IS NOT NULL
WHEN value3 THEN TRUE
END
Это можно решить с помощью оператора case, см. onedaywhen
ответ
Вы могли бы просто сделать что-то вроде этого:
SELECT *
FROM foo
WHERE (@param = 0 AND MyColumn IS NULL)
OR (@param = 1 AND MyColumn IS NOT NULL)
OR (@param = 2)
Что-то в этом роде.
Вот как это можно сделать, используя CASE
:
DECLARE @myParam INT;
SET @myParam = 1;
SELECT *
FROM MyTable
WHERE 'T' = CASE @myParam
WHEN 1 THEN
CASE WHEN MyColumn IS NULL THEN 'T' END
WHEN 2 THEN
CASE WHEN MyColumn IS NOT NULL THEN 'T' END
WHEN 3 THEN 'T' END;
WHERE MyColumn = COALESCE(@value,MyColumn)
Если @value
равно NULL
, он будет сравнивать MyColumn
с собой, игнорируя
@value = no where
предложение.
Если IF @value
имеет значение ( NOT NULL
), оно будет сравнивать MyColumn
с
@value
.
Ссылка: COALESCE (Transact-SQL) .