Если еще использовать случай для возврата значения

def strictly_increasing(L):
    return all(x<y for x, y in zip(L, L[1:]))

def strictly_decreasing(L):
    return all(x>y for x, y in zip(L, L[1:]))

def non_increasing(L):
    return all(x>=y for x, y in zip(L, L[1:]))

def non_decreasing(L):
    return all(x<=y for x, y in zip(L, L[1:]))
0
задан Michał Turczyn 18 January 2019 в 09:49
поделиться

2 ответа

Самым простым способом IMO было бы объявить переменную для хранения желаемого значения, присвоить ей значение простым для чтения способом, а затем использовать ее в выражении INSERT.

Более того, нет необходимости брать TOP 1 с упорядочением, просто используйте функцию MAX:)

DECLARE @id INT;
SELECT @id = CASE COUNT(*) WHEN 0 THEN 0 ELSE MAX(BOOKINGREFERENCENUM) + 1 END
FROM MyTable;

INSERT INTO TICKET_SALES (
    TRXDATE, 
    KIOSKID, 
    BOOKINGREFERENCENUM, 
)
VALUES (
    '2019-01-18 16:59:29',
    'KIOSK1',
    @id
);

ПРИМЕЧАНИЕ : вы заново изобретаете колесо, в SQL есть что-то вроде IDENTITY, это хорошо для такого рода задач.

0
ответ дан Michał Turczyn 18 January 2019 в 09:49
поделиться

Если вам нужно использовать выражения для ввода значений, вы можете изменить VALUES на SELECT, хотя вы сможете указать только одну строку с SELECT (если вы не используете UNION ALL).

INSERT INTO TICKET_SALES (
    TRXDATE, 
    KIOSKID, 
    BOOKINGREFERENCENUM
)
SELECT
    '2019-01-18 16:59:29',
    'KIOSK1',
    1 + ISNULL(
        (SELECT TOP 1 BOOKINGREFERENCENUM FROM TICKET_SALES ORDER BY BOOKINGREFERENCENUM DESC),
        0)

Пожалуйста, остерегайтесь использования этого типа «уловок» для генерации идентификаторов, как указывали другие, это очень плохая идея (проверьте ответ StepUp, чтобы узнать, как исправить). [116 ]

0
ответ дан EzLo 18 January 2019 в 09:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: