具有由组子查询和计数
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)))
请试试这个。
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
不工作...错误执行.. – 2012-03-02 10:18:29
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
Msg 156,Level 15,State 1,Line 4 关键字'over'附近的语法不正确。 – 2012-03-02 11:17:32
@VishalSuthar:由于'o.Offer_Text'后面缺少一个逗号,我现在已经纠正 - 再试一次。 – 2012-03-02 11:28:10
同样的错误...我已经纠正了逗号.. – 2012-03-02 11:54:44
请告诉我你的问题? – Arion 2012-03-02 08:58:09
我得到OFID,Offer_Text和计数器与上述查询,但没有得到它从属于哪个学校.. – 2012-03-02 08:59:31
@marc_s你能给我正确的输出..? – 2012-03-02 09:03:21