具有由组子查询和计数

具有由组子查询和计数

问题描述:

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 

这些都是THRE表格。

现在我想了解由学校分开的所有优惠(优惠)的信息(看看gid TerminalID在(50,76,104))。

这是三个学校:(50,76,104)

的O/P应该具备以下字段:
OFFERID(欧佩克国际发展基金),学校要约的,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))) 
+0

请告诉我你的问题? – Arion 2012-03-02 08:58:09

+0

我得到OFID,Offer_Text和计数器与上述查询,但没有得到它从属于哪个学校.. – 2012-03-02 08:59:31

+0

@marc_s你能给我正确的输出..? – 2012-03-02 09:03:21

请试试这个。

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 
+0

不工作...错误执行.. – 2012-03-02 10:18:29

+0

PLZ发表您的错误。我们无法测试查询,因为我们没有模式脚本。 – Rajan 2012-03-02 10:20:51

尝试:

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

Msg 156,Level 15,State 1,Line 4 关键字'over'附近的语法不正确。 – 2012-03-02 11:17:32

+0

@VishalSuthar:由于'o.Offer_Text'后面缺少一个逗号,我现在已经纠正 - 再试一次。 – 2012-03-02 11:28:10

+0

同样的错误...我已经纠正了逗号.. – 2012-03-02 11:54:44