Как я могу выбрать строку из таблицы в соответствии со значениями столбца строки в SQL Server - PullRequest
0 голосов
/ 23 мая 2018

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

 WITH allData
AS (
select mlid=1,value=0,checkid=1
union all
select mlid=2,value=6,checkid=2
union all
select mlid=3,value=6,checkid=1
union all
select mlid=4,value=0,checkid=2
)
select * from allData 

Результат

   Mlid  Value checked
    1    0      1
    2    6      2
    3    6      1
    4    0      2

требуемый результат ->
условие: - если отмеченные значения столбца равны 1, а столбец значений равен 0, то отображать значения проверенных значений только 2 строки
либо отображать значения проверенных столбцов 1, как показано ниже:

Mlid value checked   
2     6      2
3     6      1

1 Ответ

0 голосов
/ 23 мая 2018

Это будет работать с вашими примерами данных, но не сработает для чего-то еще?

WITH allData AS (
    SELECT MLID = 1, [VALUE] = 0, CHECKID = 1
    UNION ALL
    SELECT MLID = 2, [VALUE] = 6, CHECKID = 2
    UNION ALL
    SELECT MLID = 3, [VALUE] = 6, CHECKID = 1
    UNION ALL
    SELECT MLID = 4, [VALUE] = 0, CHECKID = 2)
SELECT 
    CASE WHEN a1.CHECKID = 1 AND a1.VALUE = 0 THEN a2.MLID ELSE a1.MLID END AS MLID,
    CASE WHEN a1.CHECKID = 1 AND a1.VALUE = 0 THEN a2.[VALUE] ELSE a1.[VALUE] END AS [VALUE],
    CASE WHEN a1.CHECKID = 1 AND a1.VALUE = 0 THEN a2.CHECKID ELSE a1.CHECKID END AS CHECKID
FROM 
    allData a1
    INNER JOIN allData a2 ON a2.MLID = a1.MLID + 1 AND a2.CHECKID = 2
WHERE
    a1.CHECKID = 1;

Полагаю, это может помочь вам начать с лучшего запроса или даже поднять некоторые вопросы о том, что вы на самом деленужно, а как эти строки связаны?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...