0

我有一个表 DTTransaction 和 DTHotelTransaction ,其中 TransactionID 是前者的主键,后者是外键。

Columns in DTTransaction  :machinename(varchar),BookedOn(datetime),TransactionID(int) 
Columns in DTHotelTransaction :HCOMCID(int) ,TransactionID 

要求 :

对于 DTTransaction 中的每个 BookedOn 值,我想要这些 (415428,415429,415430,415431,415432) HCOMCID 的机器名称和机器名称计数。

我正在尝试做:

select DTTransaction.machinename,count(DTTransaction.machinename) from DTTransaction   
join DTHotelReservation on DTTransaction.TransactionID =      
DTHotelReservation.TransactionID
and DTHotelReservation.HCOMCID in (
415428,
415429,
415430,
415431,
415432)
where convert(varchar(10),BookedOn,101)='04/10/2013'
group by DTTransaction.machinename

但它只会给出特定日期。我想获取所有现有 BookedOn 值的计数。

提前致谢。

4

1 回答 1

1

如果您想要所有日期的总和,只需删除该where子句:

select DTTransaction.machinename, count(DTTransaction.machinename)
from DTTransaction join
     DTHotelReservation
     on DTTransaction.TransactionID = DTHotelReservation.TransactionID and
        DTHotelReservation.HCOMCID in (415428, 415429, 415430, 415431, 415432)
group by DTTransaction.machinename

如果您想要按日期列出的结果,请将其包含在您的group by. 例如,

select DTTransaction.machinename, convert(varchar(10),BookedOn,101), count(DTTransaction.machinename)
from DTTransaction join
     DTHotelReservation
     on DTTransaction.TransactionID = DTHotelReservation.TransactionID and
        DTHotelReservation.HCOMCID in (415428, 415429, 415430, 415431, 415432)
group by DTTransaction.machinename, convert(varchar(10),BookedOn,101)
order by 1, MAX(BookedOn)

我包含了一个order by子句,因此结果将按每个机器名称中的日期排序。

于 2013-05-08T14:03:53.863 回答