8.х SQL запрос

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Hidden-p, 26 авг 2009.

  1. TopicStarter Overlay
    Hidden-p
    Offline

    Hidden-p

    Регистрация:
    26 авг 2009
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    #Область ОСНОВНОЙ_ЗАПРОС
    SET DATEFORMAT mdy
    SELECT
    [ОСНОВНОЙ_ЗАПРОС_ГРУППИРОВКИ],
    SUM(CHECKN) AS QC,
    AVG(QUANTITY/CHECKN) AS QQ,
    AVG(TOTALRUB/CHECKN) AS QS
    FROM
    (
    [ВЛОЖЕННЫЙ_ЗАПРОС_1]
    ) AS INNER_SELECT


    GROUP BY [ОСНОВНОЙ_ЗАПРОС_ГРУППИРОВАНИЕ], Period
    ORDER BY [ОСНОВНОЙ_ЗАПРОС_ПОРЯДОК], Period
    #КонецОбласти


    #Область ОСНОВНОЙ_ЗАПРОС_ГРУППИРОВКИ
    CASHNUMBER=CASHNUMBER
    CASHER=CASHER
    ZNUMBER=ZNUMBER
    #КонецОбласти


    #Область ОСНОВНОЙ_ЗАПРОС_ГРУППИРОВАНИЕ
    CASHNUMBER=CASHNUMBER
    CASHER=CASHER
    ZNUMBER=ZNUMBER
    #КонецОбласти


    #Область ОСНОВНОЙ_ЗАПРОС_ПОРЯДОК
    CASHNUMBER=CASHNUMBER
    CASHER=CASHER
    ZNUMBER=ZNUMBER
    #КонецОбласти


    #Область ВЛОЖЕННЫЙ_ЗАПРОС_1
    SELECT
    --ChequeHead.Cash_Code AS CASHNUMBER,
    --Cashiers.TabNumber+' '+Cashiers.CashierName AS CASHER,
    --OperGang.GangNumber AS ZNUMBER,
    [ВЛОЖЕННЫЙ_ЗАПРОС_1_ГРУППИРОВКИ],
    CONVERT(datetime, CONVERT(char(2),DATEPART(month, ChequeHead.DateOperation),104)+'/'+
    CONVERT(char(2),DATEPART(day, ChequeHead.DateOperation),104)+'/'+
    CONVERT(char(4),DATEPART(year, ChequeHead.DateOperation),104)+' 0:00:00') AS PERIOD,

    Count(DISTINCT ChequeHead.Ck_Number) AS CHECKN,
    SUM(CASE WHEN ChequeHead.Operation<>'R' THEN ChequePos.Quant ELSE 0 END) AS QUANTITY,
    SUM(CASE WHEN ChequeHead.Operation<>'R' THEN ChequePos.Summa ELSE 0 END) AS TOTALRUB
    FROM
    ChequeHead AS ChequeHead
    INNER JOIN ChequePos AS ChequePos
    ON ChequePos.ChequeId=ChequeHead.[ID]
    INNER JOIN OperGang AS OperGang
    ON ChequeHead.Cash_Code=OperGang.CashNumber AND (ChequeHead.DateOperation BETWEEN OperGang.GangDateStart AND OperGang.GangDateStop)
    LEFT OUTER JOIN Cashiers AS Cashiers
    ON ChequeHead.Cassir=Cashiers.TabNumber
    WHERE
    (ChequeHead.DateOperation BETWEEN [ДАТАНАЧАЛА] AND [ДАТАКОНЦА])
    AND ChequeHead.Cash_Code IN [СПИСОККАСС]
    AND [ВЛОЖЕННЫЙ_ЗАПРОС_1_ОТБОРЫ]

    GROUP BY
    [ВЛОЖЕННЫЙ_ЗАПРОС_1_ГРУППИРОВАНИЕ],
    CONVERT(datetime, CONVERT(char(2),DATEPART(month, ChequeHead.DateOperation),104)+'/'+
    CONVERT(char(2),DATEPART(day, ChequeHead.DateOperation),104)+'/'+
    CONVERT(char(4),DATEPART(year, ChequeHead.DateOperation),104)+' 0:00:00')

    #КонецОбласти

    #Область ВЛОЖЕННЫЙ_ЗАПРОС_1_ГРУППИРОВКИ
    CASHNUMBER=ChequeHead.Cash_Code
    CASHER=Cashiers.TabNumber+' '+Cashiers.CashierName
    ZNUMBER=OperGang.GangNumber
    #КонецОбласти

    #Область ВЛОЖЕННЫЙ_ЗАПРОС_1_ГРУППИРОВАНИЕ
    CASHNUMBER=ChequeHead.Cash_Code
    CASHER=Cashiers.TabNumber+' '+Cashiers.CashierName
    ZNUMBER=OperGang.GangNumber
    #КонецОбласти




    Что Выдает


    Номер кассы Количество чеков Средняя сумма чека
    2 296,000 265,72
    4 313,000 274,55

    Итог 609,000 540,28




    Не правильно считает Средние суммы!!!


    Что Должно.

    Номер кассы Количество чеков Средняя сумма чека
    2 296,000 265,72
    4 313,000 274,55

    Итог 609,000 270,135

    Вложения:

  2. EvgDol
    Offline

    EvgDol

    Регистрация:
    3 сен 2008
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    :unsure: Зачем так разбивать запрос? Читать же невозможно!

    Я не совсем понял где у Вас считается итоговая строка, но судя по выводимым данным, она считается правильно, т.е. выводит сумму по колонкам.
    Если Вам надо по другому считать итоги, то ошибки не в запросе, а в выводе итогов.

Поделиться этой страницей