У меня есть таблица, в которой хранится годовая стоимость, а также значение для каждого месяца календаря (с января по декабрь).Как сравнить значение столбца с несколькими другими значениями столбцов
Я хотел бы легко проверить значение во всех столбцах за 12 месяцев и определить, одинаковы ли значения между месяцами. Каждый из столбцов значений определяется как INT
и может содержать значения NULL.
Что является самым простым способом сравнения этих столбцов в SELECT
?
CREATE TABLE #FOO
(
ID INT NOT NULL IDENTITY(1,1),
YearlyValue INT NULL,
JanValue INT NULL,
FebValue INT NULL,
MarValue INT NULL,
AprValue INT NULL,
MayValue INT NULL,
JunValue INT NULL,
JulValue INT NULL,
AugValue INT NULL,
SepValue INT NULL,
OctValue INT NULL,
NovValue INT NULL,
DecValue INT NULL
);
INSERT INTO #FOO (YearlyValue, JanValue, FebValue, MarValue, AprValue, MayValue, JunValue, JulValue, AugValue, SepValue, OctValue, NovValue, DecValue)
VALUES (NULL, 19, 19, 19, 19, 14, 14, 14, 15, 15, 15, 15, 16)
, (5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5)
, (NULL, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5)
;
SELECT * FROM #FOO
DROP TABLE #FOO;
EDIT
Это, кажется, работает хорошо для того, что я пытаюсь сделать. Спасибо пользователю MuthuMK
и всем остальным за вашу помощь.
SELECT D.ID, MIN(A) AS MinValue, MAX(A) AS MaxValue
FROM #FOO AS D
CROSS APPLY
(
VALUES (D.JanValue), (D.FebValue), (D.MarValue), (D.AprValue), (D.MayValue)
, (D.JunValue), (D.JulValue), (D.AugValue), (D.SepValue), (D.OctValue)
, (D.NovValue), (D.DecValue)
) AS X(A)
GROUP BY D.ID
HAVING MIN(A) = MAX(A)
Не могли бы вы показать выборочные данные и ожидаемый результат – TheGameiswar
вы просто пытаетесь увидеть, если они одинаковы? Как и в, вы просто ищете ответ «да/нет» или вам нужно знать, какие столбцы имеют одинаковые значения? – Jackson
Если вы только пытаетесь получить да/нет, чтобы «все они одинаковы», возьмите союз за строкой, размер массива скажет вам, сколько уникальных значений есть (1 подразумевает, что они все одинаковы) – Jackson