我有两个表[SourceTbl]
和[TransactionDates]
..在我的SourceTbl
我有这些字段.. Source
和Transaction
SourceTbl表:
[Source] [Transaction]
AAB 1
AAA 1
ABB 2
AAA 1
AAB 1
TransactionDates表:
[TransactionID] [Date] [isActive]
1 9/26/2014 1
2 9/25/2014 0
3 9/24/2014 0
如果我们选择TransactionID
需要计算当前所选的交易,并且还获得先前交易的先前计数(-1日期或活动交易行)。交易基于什么是活跃的。表格中只应激活1个有效日期
输出应该是 - 我使用的TransactionID
是1。
Source PrevCount CurrentCount
AAB 0 2
AAA 0 2
ABB 1 0
答案 0 :(得分:0)
MS SQL Server 2008架构设置:
CREATE TABLE [SourceTbl] ([Source] VARCHAR(10), [Transaction] INT)
INSERT INTO [SourceTbl]([Source] ,[Transaction])
VALUES
('AAB', 1),
('AAA', 1),
('ABB', 2),
('AAA', 1),
('AAB', 1)
CREATE TABLE [TransactionDates] ([TransactionID] INT, [Date] DATE)
INSERT INTO [TransactionDates] ([TransactionID], [Date])
VALUES
(1 ,'9/26/2014'),
(2 ,'9/25/2014'),
(3 ,'9/24/2014')
查询1 :
SELECT S.Source
,COUNT( CASE WHEN T.[Date] = CAST(GETDATE() - 1 AS DATE)
THEN 1 ELSE NULL END) AS PrevCount
,COUNT( CASE WHEN T.[Date] = CAST(GETDATE() AS DATE)
THEN 1 ELSE NULL END) AS CurrentCount
FROM SourceTbl S
INNER JOIN TransactionDates T ON S.[Transaction] = T.[TransactionID]
WHERE T.[DATE] >= CAST(GETDATE() - 1 AS DATE)
AND T.[DATE] <= CAST(GETDATE() AS DATE)
GROUP BY S.Source
<强> Results 强>:
| SOURCE | PREVCOUNT | CURRENTCOUNT |
|--------|-----------|--------------|
| AAA | 0 | 2 |
| AAB | 0 | 2 |
| ABB | 1 | 0 |