2014-02-12 3 views
-1

быстрый вопрос:SQL - Matching результирующие столбцы

пытается придумать столбец, который отображает строки, которые отличаются от двух колонок:

я ищу таблицу 3, как следующее:

Первые 2 столбца состоят из функций SUM. Я ищу, чтобы определить, какие строки отличаются (не совпадают) и отображать значение, указанное в столбце 2 в столбце 3. Любые идеи?

Например

Column 1Column 2Column 3

1   1   
2   3  3 
4   4 
+0

Вы можете использовать 'CASE' для этого как' CASE WHEN col1 = col2 THEN '' ELSE col2 END как col3'. – user2989408

+0

Я пытался использовать CASE. проблема в том, что эти значения уже являются случаями: SUM (CASE КОГДА super.Guid НЕ ЯВЛЯЕТСЯ ТОЛЬКО 1 ELSE 0 END), а другой столбец - просто счет. Итак, как я могу подключиться к CASE? –

+0

Другой вариант - использовать другой запрос в качестве подзапроса, а затем использовать регистр для вычисления третьего столбца. как 'SELECT *, (наш случай) FROM (ваш запрос) как x'. – user2989408

ответ

2

Вы могли бы иметь, что один в качестве подзапроса. Это была бы «идея»

SELECT T.Column1, T.Column2, CASE WHEN T.Column1 == T.Column2 THEN NULL ELSE Column2 end 
FROM (
    SELECT SUM(CASE WHEN super.Guid IS NOT NULL THEN 1 ELSE 0 END) as Column1, 
       COUNT(...) as Column2 
    FROM...) T 
+0

Что мне нужно для «Column1» и «Column2»? –

+0

Столбец1 и Столбец2 будут именем, которое вы хотите добавить для своих столбцов (результат того случая, о котором вы говорили). Во втором SELECT я назвал первый SUM (CASE ..) как столбец 1, а второй как Column2 –

+0

, поэтому для вашего текущего кода: SUM (CASE WHEN super.Guid НЕ ЯВЛЯЕТСЯ ТОЛЬКО 1 ELSE 0 END) AS Column1, COUNT (adver.Name) В качестве столбца2 –

0

Вы можете использовать mysql's IF() для этого: Если они не равны, выберите COLUMN2, еще NULL:

SELECT IF(Column1 <> Column2, Column2, NULL) AS Column3 
+0

Правильно, как бы мой синтаксис выглядел как «Column1» и «Column2». Поля, которые я использую, являются SUM (CASE WHEN super.Guid НЕ ЯВЛЯЕТСЯ ТОЛЬКО 1 ELSE 0 END), а другой столбец COUNT (adver.Name) –

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