/ / Jak wykonać zapytanie, aby porównać w tym roku sprzedaż zeszłoroczną? - sql, sql-server-2012, sprzedaż

Jak wykonać zapytanie, aby porównać w tym roku sprzedaż zeszłoroczną? - sql, sql-server-2012, sprzedaż

Jestem stosunkowo nowy w SQL i staram się zrobić proste zapytanie, aby spojrzeć na tegoroczną wyprzedaż w dniu w porównaniu do zeszłego roku z tą samą datą lub idealnie tego samego dnia tygodnia.

Utworzyłem następujące zapytanie, które obecnie opiera się na jednym zestawie dni. Będę musiał to przenieść, aby dzisiejsza randka była naprawdę, ale pomyślałem, że rozwiążę to później.

-

Below is the query
-strtrdecode = store location
-dtmtradedate = transaction date
-cursales = sales value
-Target = will contain Targets but i haven"t generated any yet but need to show -the field

Czy ktoś mógłby mi pokazać, jak wyświetlać zarówno dane z tego roku, jak i zeszłego roku, w tej samej linii dla każdego sklepu

to znaczy

liverpool, 01/06/2015, 4000,3000
blackpool, 01/06/2015, 6000, 7500 etc..

Z góry dziękuję

Mikrofon

TABLE_CATALOG   TABLE_SCHEMA    TABLE_NAME  COLUMN_NAME
> DRSData   dbo DAILYSALES  STRSALETYPE
> DRSData   dbo DAILYSALES  STRTRADECODE
> DRSData   dbo DAILYSALES  CURSALES
> DRSData   dbo DAILYSALES  DTMTRADEDATE
> DRSData   dbo DAILYSALES  INTTRANSNUM



*SELECT        strtradecode, dtmtradedate, sum(cursales) as [Actual SALES TY], "" as Target
FROM            DAILYSALES
where (STRSALETYPE = "H" )and (DTMTRADEDATE BETWEEN CONVERT(DATETIME, "2015-06-01 00:00:00", 102) AND CONVERT(DATETIME, "2015-06-01 00:00:00",
102))
group by strtradecode, dtmtradedate*

Odpowiedzi:

0 dla odpowiedzi № 1

Okej, proszę o wyrozumiałość, ponieważ jest to moja pierwsza próba odpowiedzi i jestem również bardzo nowy w SQL.

Próbuję się uczyć, ale chcę uzyskać więcejzaangażowany tutaj. Jestem pewien, że nie jest to najskuteczniejszy sposób wykonywania tego, co chcesz robić, ale tak jak powiedziałem, że jestem nowy i to jedyny sposób, w jaki wiem. Jestem całkowicie otwarty na poprawki i pomoc. Dzięki!

-- 1. Began by declaring the dates.
-- 2. Then created a temp table.
-- 3. Inserted into the temp table
-- 4. Created JOINS to separate the dates you wanted.
-- 5. SELECTED fields from the temp table for the desired output.

-- Step 1

DECLARE  @startDate1   DATETIME2 = "01/01/2014", -- Creating previous year
@endDate1     DATETIME2 = "12/31/2014", -- Creating previous year
@startDate2   DATETIME2 = "01/01/2015", -- Creating this year
@endDate2     DATETIME2 = "12/31/2015"; -- Creating this year
-- Step 2

DECLARE @yearFigures TABLE (    -- Created temp table with your desired output
StoreLocation VARCHAR(20),
TransactionDt VARCHAR(10),
PreviousYear VARCHAR(20),
CurrentYear VARCHAR(20))

-- Step 3

INSERT INTO @yearFigures        -- Inserting into your temp table
SELECT DISTINCT
strtrdecode,
CONVERT( VARCHAR(10), dtmtradedate, 101),
sales1.cs1,
sales2.cs2
FROM DAILYSALES dls

-- Step 4

LEFT OUTER JOIN(
SELECT cursales AS cs1
FROM DAILYSALES dls
WHERE dtmtradedate BETWEEN @startDate1 AND @endDate1
GROUP BY cursales ) AS sales1 ON sales1.cursales = dls.cursales -- Year one
LEFT OUTER JOIN (
SELECT cursales AS cs2
FROM DAILYSALES dls
WHERE dtmtradedate BETWEEN @startDate2 AND @endDate2
GROUP BY cursales ) AS sales2 ON sales2.cursales = dls.cursales; -- Year two

-- Step 5

SELECT StoreLocation,
TransactionDt,
SalesValue,
SalesValue2
FROM @yearFigures -- From here you"re pulling from your temp table (your output)

Powinieneś dostać to, czego szukasz dzięki temu. LEWE ZEWNĘTRZNE DOŁĄCZY lata oddzielnych wartości sprzedaży i nazwał je. Uruchomiłem go na jednym z moich dbo dla 1 rzędu i dostałem to

StoreLocation  TransactionDt  PreviousYear   CurrentYear
AESKAGGS         03/14/2014     828.35         400.00

PONOWNIE, wyluzujcie mi chłopaki .. Jestem noobem.