Подзапрос с группировкой и количеством - PullRequest
0 голосов
/ 02 марта 2012

tbl_Offer

OFID bigint
Offer_Text text

OFID    Offer_Text   
-------    ----------    
1014    Test1   
1015    Test2

tbl_TransactionDishout

offerNo   TerminalID      Created
---------------------------------
1014      170924690436418 2010-05-25 12:51:59.547

tblVTSettings

gid      mid       tid
-----------------------
50       153       119600317313328
104      158       160064024922223
76       162       256674529511898
1111     148       123909123909123

Это три таблицы.

Теперь я хочу получить информацию обо всех сделках (предложениях), разделенных по школам (посмотрите, где TerminalID в (50,76,104)).

Это три школы: (50,76,104)

В о / п должны быть следующие поля:
OfferID (OFID), Школа, для которой действует предложение, Offer_Text, Количество раз, когда это предложение.

Запрос может выглядеть примерно так:

    SELECT OFID, Offer_Text,
    Counter = 
    (
    SELECT COUNT(*) FROM dbo.tbl_TransactionDishout t 
    WHERE t.OfferNo = CAST(OFID AS NVARCHAR(30)) 
    and t.TerminalID in 
    (select TID from tblVTSettings where gid in (50,76,104))
    )
    FROM dbo.tbl_Offer 
    Where EXISTS (SELECT * FROM dbo.tbl_TransactionDishout 
          WHERE OfferNo = CAST(OFID AS NVARCHAR(30)))

Ответы [ 2 ]

0 голосов
/ 02 марта 2012

Попробуйте:

SELECT o.OFID,
       s.gid,
       o.Offer_Text,
       count(*) over (partition by o.OFID) number_schools,
       count(*) over (partition by s.gid) number_offers
  FROM tbl_Offer o
  JOIN tbl_TransactionDishout d ON o.OFID = d.offerNo
  JOIN tblVTSettings s ON s.tid = d.TerminalID
0 голосов
/ 02 марта 2012

Пожалуйста, попробуйте это.

SELECT to.OFID
      ,ts.gid AS 'School the offer is for'
      ,to.Offer_Text
      ,COUNT(to.OFID) AS 'Number of time the offer is'
  FROM tbl_Offer to
  JOIN tbl_TransactionDishout tt
    ON to.OFID = tt.offerNo
  JOIN tblVTSettings ts
    ON ts.tid = tt.TerminalID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...