Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Select record for every month
Message
Information générale
Forum:
Microsoft SQL Server
Catégorie:
Autre
Versions des environnements
SQL Server:
SQL Server 2014
Application:
Desktop
Divers
Thread ID:
01613120
Message ID:
01613137
Vues:
69
This message has been marked as the solution to the initial question of the thread.
Sure:
DECLARE @Months TABLE (Mnt tinyint)
INSERT INTO @Months VALUES (1)
INSERT INTO @Months VALUES (2)
INSERT INTO @Months VALUES (3)
INSERT INTO @Months VALUES (4)
INSERT INTO @Months VALUES (5)
INSERT INTO @Months VALUES (6)
INSERT INTO @Months VALUES (7)
INSERT INTO @Months VALUES (8)
INSERT INTO @Months VALUES (9)
INSERT INTO @Months VALUES (10)
INSERT INTO @Months VALUES (11)
INSERT INTO @Months VALUES (12)

/*Preparing example data */
DECLARE @Salesperson TABLE (owner_id varchar(20), sale_date datetime, id int IDENTITY(1,1))
INSERT INTO @Salesperson (owner_id, sale_date) VALUES ('Peter', '20140102') --1
INSERT INTO @Salesperson (owner_id, sale_date) VALUES ('Peter', '20140102') --2
INSERT INTO @Salesperson (owner_id, sale_date) VALUES ('Peter', '20140204') --3
INSERT INTO @Salesperson (owner_id, sale_date) VALUES ('Peter', '20140204') --4
INSERT INTO @Salesperson (owner_id, sale_date) VALUES ('Peter', '20140306') --5
INSERT INTO @Salesperson (owner_id, sale_date) VALUES ('Peter', '20140306') --6
INSERT INTO @Salesperson (owner_id, sale_date) VALUES ('Peter', '20140408') --7

INSERT INTO @Salesperson (owner_id, sale_date) VALUES ('Paul', '20140102') --8
INSERT INTO @Salesperson (owner_id, sale_date) VALUES ('Paul', '20140102') --9

INSERT INTO @Salesperson (owner_id, sale_date) VALUES ('Paul', '20140202') --10
INSERT INTO @Salesperson (owner_id, sale_date) VALUES ('Paul', '20140202') --11

INSERT INTO @Salesperson (owner_id, sale_date) VALUES ('Paul', '20140302') --12

INSERT INTO @Salesperson (owner_id, sale_date) VALUES ('Paul', '20140402') --13
INSERT INTO @Salesperson (owner_id, sale_date) VALUES ('Paul', '20140402') --14

INSERT INTO @Salesperson (owner_id, sale_date) VALUES ('Mary', '20140601') --15



DECLARE @Sales TABLE (opp_id int, amtfinanced numeric(14,2))

INSERT INTO @Sales VALUES(1, 2000.00)
INSERT INTO @Sales VALUES(2, 12000.00)
INSERT INTO @Sales VALUES(3, 12000.00)
INSERT INTO @Sales VALUES(4, 13000.00)
INSERT INTO @Sales VALUES(5, 14000.00)
INSERT INTO @Sales VALUES(6, 15000.00)
INSERT INTO @Sales VALUES(7, 16000.00)

INSERT INTO @Sales VALUES(8, 12000.00)
INSERT INTO @Sales VALUES(9, 13000.00)
INSERT INTO @Sales VALUES(10, 14000.00)
INSERT INTO @Sales VALUES(11, 15000.00)
INSERT INTO @Sales VALUES(12, 16000.00)
INSERT INTO @Sales VALUES(13, 17000.00)
INSERT INTO @Sales VALUES(14, 18000.00)

INSERT INTO @Sales VALUES(15, 1000000.00)
INSERT INTO @Sales VALUES(17, 2000000.00) ---??????
/*End preparing example data */

SELECT Prs.owner_id,
       Prs.Mnt,
       COALESCE(Tbl1.Sum, 0) AS Sumofmonthsales
FROM (SELECT DISTINCT Salesperson.owner_id,
             Mnt.Mnt
      FROM @Salesperson Salesperson
      CROSS JOIN @Months Mnt) Prs
LEFT JOIN (SELECT Salesperson.owner_id,
                  MONTH(Salesperson.Sale_Date) AS Mnt,
                  SUM(Sales.amtfinanced) AS Sum
           FROM @Sales Sales
           INNER JOIN @Salesperson Salesperson ON Sales.opp_id = Salesperson.Id
           WHERE YEAR(Salesperson.Sale_Date) = 2014
           GROUP BY Salesperson.owner_id,
                    MONTH(Salesperson.Sale_Date)) Tbl1
      ON Prs.owner_id = Tbl1.owner_id AND
         Prs.Mnt = Tbl1.Mnt
ORDER BY Prs.owner_id,
         Prs.Mnt
Against Stupidity the Gods themselves Contend in Vain - Johann Christoph Friedrich von Schiller
The only thing normal about database guys is their tables.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform