Сегодня я создавал запрос и застрял. У меня есть два уникальных идентификатора, которые определяют, является ли и порядок внутренним или сетевым. Я был в состоянии разделить это, так что он подсчитывает, сколько раз они появляются, но, к сожалению, он не дает мне ожидаемого результата. По результатам исследований я попытался создать заявление «Определить случай, когда», чтобы предоставить мне результаты.
Пожалуйста, смотрите ниже, где я разбил то, что он делает, и как я ожидаю, что это будет.
Исходные данные выглядят так:
Company Name Order Date Order Items Orders Value REF
-------------------------------------------------------------------------------
CompanyA 03/01/2019 Item1 Order1 170 INT1
CompanyA 03/01/2019 Item2 Order1 0 INT1
CompanyA 03/01/2019 Item3 Order2 160 WEB2
CompanyA 03/01/2019 Item4 Order2 0 WEB2
Как я ожидаю, что будет:
Company Name Order Date Order Items Orders Value WEB INT
-----------------------------------------------------------------------------------------
CompanyA 03/01/2019 4 2 330 1 1
Что в настоящее время выходит
Company Name Order Date Order Items Orders Value WEB INT
-----------------------------------------------------------------------------------------
CompanyA 03/01/2019 4 2 330 2 2
Как вы можете видеть из моего текущего результата, он считает каждую строку, даже если это одна и та же ссылка. Теперь это не жесткое и быстрое правило, которое всегда удваивается. Вот почему я думаю, что мне нужен случай с графом. Ниже мой запрос, который я сейчас использую. Это тянуть из ODBC Progress V10, который я подключаю через Excel. К сожалению, у меня нет SSMS и Microsoft Query просто бесполезен.
Мой текущий SQL:
SELECT
Company_0.CoaCompanyName
, SopOrder_0.SooOrderDate
, Count(DISTINCT SopOrder_0.SooOrderNumber) AS 'Orders'
, SUM(CASE WHEN SopOrder_0.SooOrderNumber IS NOT NULL THEN 1 ELSE 0 END) AS 'Order Items'
, SUM(SopOrderItem_0.SoiValue) AS 'Order Value'
, SUM(CASE WHEN SopOrder_0.SooParentOrderReference LIKE 'INT%' THEN 1 ELSE 0 END) AS 'INT'
, SUM(CASE WHEN SopOrder_0.SooParentOrderReference LIKE 'WEB%' THEN 1 ELSE 0 END) AS 'WEB'
FROM
SBS.PUB.Company Company_0
, SBS.PUB.SopOrder SopOrder_0
, SBS.PUB.SopOrderItem SopOrderItem_0
WHERE
SopOrder_0.SopOrderID = SopOrderItem_0.SopOrderID
AND Company_0.CompanyID = SopOrder_0.CompanyID
AND SopOrder_0.SooOrderDate > '2019-01-01'
GROUP BY
Company_0.CoaCompanyName
, SopOrder_0.SooOrderDate
Я попытался использовать следующую строку, но при импорте возникли ошибки:
, Count(DISTINCT CASE WHEN SopOrder_0.SooParentOrderReference LIKE 'INT%' THEN SopOrder_0.SooParentOrderReference ELSE 0 END) AS 'INT'
Просто знайте, что ошибка, которую я получаю при импорте в данный момент, это синтаксическая ошибка в или около "CASE WHEN sopOrder_0.SooParentOrderRefer" (10713)