我有3个表与这个查询连接在一起。 其中一个给我带来了人名,另一个带给我他们的积分,最后一个带给我日期时间。
我选择总人数。
另外,第3张表格中有一栏给我带来了分数'交易Date Time
。我的问题是我想用这种条件写一个TSQL查询:
选择人员得分为12,000或以上的交易日期。
在我的想法中我应该使用while循环,但我不知道语法?
答案 0 :(得分:2)
我就是这样做的 -
SELECT cp.FirstName
, cp.LastName
, SUM(Points) as Score
FROM ClubProfile cp
RIGHT JOIN CardTransaction ct
ON cp.ClubProfileId = ct.ClubProfileId
INNER JOIN Your3rdTable as t3
ON cp.ClubProfileId = t3.ClubProfileId
WHERE CONVERT(VARCHAR, ct.[Date Column], 101) = @your_date_param
GROUP BY
cp.FirstName
, cp.LastName
HAVING SUM(Points) >=12000
答案 1 :(得分:1)
根据您的帖子,这应该接近您的需要。您需要添加第3个表并相应地更改此语句。
SELECT cp.FirstName
, cp.LastName
, SUM(Points) as Score
FROM [fidilio].[dbo].[ClubProfile] cp
RIGHT JOIN (
CardTransaction ct
INNER JOIN CardTransactionLog ctl
ON cp.CardTransactionLogId = ctl.CardTransactionLogId
)
ON cp.ClubProfileId = ct.ClubProfileId
GROUP BY
cp.FirstName
, cp.LastName
HAVING SUM(Points) >=12000
AND ctl.TransactionTimeStamp = @SomeDateTimeVariable
变量@SomeDateTimeVariable必须来自某个地方您的确切时间范围标准