2012-03-05 53 views
0

tbl_TransactionDishout加入查询用于获取计数

Trnx_id offerNo TerminalID  Created     VirtualCard 
------------------------------------------------------------------- 
1   1014  170924690436418 2010-05-25 12:51:59.547 1234567890 
2   1014  123924690436418 2010-05-23 12:51:59.547 1234567890 
3   1015  144524690436418 2010-05-23 12:51:59.547 1234567890 

tbl_Offer

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

现在我所要的输出是这样的:

OFID Offer_Text  Counter 
------------------------------ 
1014 Test1   2 
1015 Test2   1 

是否有可能与单个查询..?

回答

1

试试这个:

select t2.OFID, cast(t2.Offer_Text as varchar(max)), Count(*) 
from tbl_TransactionDishout t 
inner join tbl_Offer t2 on cast(t.offerNo as varchar(max)) = cast(t2. OFID as varchar(max)) 
group by t2.OFID, cast(t2.Offer_Text as varchar(max)) 
+0

消息306,级别16,状态2,4号线 文本,ntext和图像数据类型不能比较或排序,除非使用IS NULL或LIKE运算符。 – 2012-03-05 07:18:33

+0

你可以显示你的表格结构,是一个文本? – Vikram 2012-03-05 07:21:19

+0

不... Offer_Text是一个文本,OfferNo也是测试... – 2012-03-05 07:23:32

0

试试这个,它会工作

select t1.OFID,t1.Offer_text, count(t2.offerNo) 
from tbl_Offer t1 inner join tbl_TransactionDishout t2 
on t1.OFID= t2.offerNo 
group by t1.OFID,t1.Offer_text 
+0

Msg 8120,Level 16,State 1,Line 2 列'tbl_Offer.OFID'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。 – 2012-03-05 07:20:26

+0

是的。为了不用直接的列名,你可以使用alias name作为t的tbl_Offer,t1作为另一个表并进行连接。 – Java 2012-03-05 07:24:26

+0

您需要添加group by子句。 – 2012-03-05 07:26:25

1

你可以这样写

SELECT  O.OFID, O.Offer_Text, COUNT(t.offerNo) AS Counter FROM tbl_Offer AS O 
INNER JOIN tbl_TransactionDishout AS t ON O.OFID = t.offerNo GROUP BY O.OFID, O.Offer_Text 

编辑:

以下是输出屏幕截图当我tr ied它在我的系统中。

enter image description here

+0

你需要添加group by子句。该声明将引发错误。 – 2012-03-05 07:21:33

+0

消息8120,级别16,状态1,行1 列'tbl_Offer.OFID'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。 – 2012-03-05 07:22:15

+0

@VishalSuthar,再次检出编辑后的查询。 – 2012-03-05 07:36:11

0
select a.offerNo,Offer_Text,COUNT(a.TerminalID) as Counter 
from 
tbl_TransactionDishout a, 
tbl_Offer b 
where a.OFID = b.OFID 
group by OFID,Offer_Text; 
+0

Msg 306,Level 16,State 2,Line 6 除了使用IS NULL或LIKE运算符时,不能比较或排序文本,ntext和图像数据类型。 – 2012-03-05 07:21:51

+0

立即检查。我编辑了答案。你可以显示你的表格结构,是offerNo和OFID文本吗? – 2012-03-05 07:25:19

+0

消息306,级别16,状态2,行6 除非使用IS NULL或LIKE运算符,否则不能比较或排序文本,ntext和图像数据类型。 – 2012-03-05 07:27:53

0

尝试此查询

select OFID, Offer_Text, Trnx_id as Counter from tbl_offer left join tbl_TransactionDishout on transactionDishout.offerNo = tbl_Offer.OfferText ordered by Trnx_id desc