Слияние условно-бесплатных ограничений в программном обеспечении C++

Вот немедленное исправление вашего запроса. Вам нужно сложить по выражению CASE, а не наоборот.

SELECT
    s.item_id,
    SUM(CASE WHEN MONTH(s.date) = 1 THEN s.item_count END) AS JAN,
    SUM(CASE WHEN MONTH(s.date) = 2 THEN s.item_count END) AS FEB
FROM sales s
GROUP BY
    s.item_id
ORDER BY
    s.item_id;

Но потенциальная проблема с этим запросом состоит в том, что для поддержки большего количества месяцев вам нужно добавить больше столбцов. Кроме того, если вы хотите охватить несколько лет, этот подход также может не масштабироваться. Предполагая, что у вас есть только несколько предметов, вот еще один способ сделать это:

SELECT
    DATE_FORMAT(date, '%Y-%m') AS ym,
    SUM(CASE WHEN item_id = 1 THEN item_count END) AS item1_total,
    SUM(CASE WHEN item_id = 2 THEN item_count END) AS item2_total
FROM sales
GROUP BY
    DATE_FORMAT(date, '%Y-%m');

Это будет генерировать вывод, похожий на:

ym       item1_total  item2_total
2018-01  11           5
2018-02  7            3

Какая версия вы используете, зависит от того, сколько месяцы, которые требуются в вашем отчете, по сравнению с тем, сколько элементов может появиться в ваших данных.

11
задан AndyUK 6 October 2008 в 11:20
поделиться

5 ответов

Относительно случайно сгенерированного ключа, как Вы проверите, ключ законен или если ключ является поддельным, если это на самом деле случайно? Взгляните на статью "Implementing a Partial Serial Number Verification System", поскольку это довольно хорошо и легко реализовать на любом языке.

Относительно гонок на время, поскольку основное решение состояло бы в том, чтобы сравнить Ваше основное время создания исполняемых файлов с текущим системным временем и действовать на различие. Это предполагает, что Ваш установщик устанавливает время создания файлов на время установки в противоположность сохранению времени, Вы скомпилировали его!:)

5
ответ дан 3 December 2019 в 08:57
поделиться

Также не упустите время, изменяясь радикально, если текущая дата является волшебно меньше, чем дата установки и такой.

Один способ обойти этот тип datelock состоит в том, чтобы изменить Вашу дату перед установкой, чтобы быть годами в будущем. Таким образом, необходимо проверить, что дата сегодня не меньше что дата установки.

3
ответ дан 3 December 2019 в 08:57
поделиться

Если Ваше программное обеспечение будет действительно полезно, то Вы, конечно, найдете взломанные копии на P2P перед наблюдением первого порядка. Это произойдет, неважно, насколько сложный код осуществления лицензии, который Вы собираетесь реализовать.

Тем не менее просто сохраните дату первого показа где-нибудь (может быть реестр, если в Windows), и после того, как 30 дней отказываются запускать, или просто открывать окно напоминания.

Не волнуйтесь о мошенниках, они будут находить путь вокруг Ваших ограничений несмотря ни на что. Беспокойством о Ваших честных клиентах и очень стараться не сделать свою жизнь тяжелее.

Eric Sink записал больше об этом здесь (разделите 4).

3
ответ дан 3 December 2019 в 08:57
поделиться

На первом запуске можно сохранить фактическую дату где-нибудь.
Каждый, что запускает следующее, Вы ищете сохраненную дату, если это существует, Вы читаете его, если это спустя больше чем 30 дней после первого запуска Вы останавливаете программу.

1
ответ дан 3 December 2019 в 08:57
поделиться

Посмотрите эту библиотеку.

Описание:

Преобразуйте любое приложение в ограниченное временем условно-бесплатное программное обеспечение. Генерируйте порядковые номера для регистрации его. Библиотека функций, предлагающая гибкую запирающую систему с серьезным шифрованием. Легкий реализовать. Поддержка VB, C++, Delphi, других языков.

1
ответ дан 3 December 2019 в 08:57
поделиться
Другие вопросы по тегам:

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