J'ai trouvé une inexactitude dans votre exemple table1, l'une des transactions, parce que vous avez là ID toutes les 1 Transactions (donc je don ne comprend pas si c'est le numéro de la transaction passée par un client, mais dans ce cas doit être unique, ou fait référence à un type de transaction, mais aussi dans ce cas il doit être unique, cela pourrait être simplement une façon d'être rapide et donnez-nous un exemple, mais à la place un ID en général est vraiment important dans une table, à la fois dans un D Operational ou DWH, comme il est utilisé comme référence, donc j'ai recréé yo ur le cas d'une façon plus précise et compréhensible way
--Transactions émis par votre client
create table TransactionT
([ID] int,
[TransactionID] int,
[Y] date,
[Month] int ,
[Channel] int ,
[Transaction_Type] varchar(10),
[CustomerID] int
)
table --Service
create table Customer
( [CustomerID] int,
[Name] varchar(10)
)
-Transactions Type possible
create table TransactionList
( [TransactionID] int,
[Transaction_Type] varchar(10)
)
- -en insérant quelques données dans ces tableaux
insert into Customer(CustomerID,Name)
values (1,'First'),
(2,'Second'),
(3,'Third'),
(5,'Jay'),
(6,'PiT'),
(4,'Marco');
insert into TransactionT (ID,TransactionID,Y,Month,Channel,Transaction_Type,
CustomerID)
values (1,1,'2008-11-10',2,4,'Deposit', 2),
(2,2, '2008-11-11',3,4,'Inquiry', 2),
(3,3,'2008-11-14',3,4,'Withdraw', 2),
(4,1,'2017-11-15',3,4,'Deposit', 5),
(5,1,'2017-11-16',3,4,'Deposit', 6),
(6,3,'2017-11-16',4,5,'Withdraw', 6),
(7,1,'2017-11-16',3,4,'Deposit', 2),
(8,2,'2017-11-16',5,6,'Inquiry', 5),
(9,3,'2017-11-18',3,4,'Withdraw', 6),
(10,1,'2017-11-19',3,4,'Deposit', 3);
insert into TransactionList(TransactionID,Transaction_Type)
values (1,'Deposit'),
(2,'Inquiry'),
(3,'Withdraw');
Pour répondre à votre première question (combien de clients ont utilisé un canal spécifique et de transaction en 2017 mois 2), je l'ai fait une solution plus générale, si convenable pour un mois, mais en appliquant simplement une condition where vous pouvez avoir le filtre pour un mois spécifique, vérifiez here:
select
count (Transaction_Type) as COUNT_TR,
count (Channel) as COUNT_CN,
count (C.CustomerID) AS COUNT_CS,
Transaction_Type,
Month,
Channel,
C.CustomerID
from
TransactionT as T
join Customer as C
on T.CustomerID = C.CustomerID
group by Transaction_Type, Channel,month, C.CustomerID
au lieu de votre deuxième, « et combien n'ont pas utilisé ce type de transaction et dans lequel les canaux. » a un certain degré de « l'information manque », en effet comment un client peut avoir utilisé un canal, si ce n'est pas une transaction? Je diveded alors la question en 2 étapes, à savoir les clients qui ne fait aucune transaction, et here SQL pour SQL Server:
select CustomerID from Customer
except (
select distinct C.CustomerID from TransactionT C
left join TransactionT T
on T.CustomerID = C.CustomerID
)
Cela peut également être obtenu dans ce way
Au lieu de cela, si besoin connaître les clients qui n'ont pas fait une méthode de transaction particulière alors cela est moins intuitif et nécessite une sous-requête, car SQL Server ne supporte pas this, mais utilise logiquement this.
select distinct C.CustomerID,T.Transaction_Type
from TransactionT T
cross join Customer as C
left join (
select A.TID as TransactionID,A.T as Transaction_Type ,B.C as CustomerID
from
(
select TransactionID TID,Transaction_Type T, C.CustomerID C
from TransactionT T join Customer C
on T.CustomerID = C.CustomerID
) A join
(
select TransactionID TID,Transaction_Type T, C.CustomerID C
from TransactionT T join Customer C
on T.CustomerID = C.CustomerID) B
on A.C = B.C
group by A.TID, A.T, B.C
) sub
on sub.TransactionID = T.TransactionID and sub.CustomerID = C.CustomerID
where sub.TransactionID is null
Comme vous pouvez le voir here
Hope this helps
Dans Excel, vous pouvez probablement obtenir les informations à partir d'un tableau croisé dynamique. Ensuite, utilisez différentes techniques de manipulation de texte pour assembler ces phrases. Modifiez votre message lorsque vous avez essayé quelque chose, et rencontrez des problèmes et avez une question. Ou fournissez une réponse si vous développez une solution satisfaisante. –
Salut, désolé je pense que je pourrais avoir donné une mauvaise idée de ce que je veux, je ne cherche pas de phrases, juste des chiffres normaux dans une table, et la chose avec Excel est-il ne peut pas gérer de grandes données, dans ce cas je parle 100s of 1000s of records – AmmarR
Si vous n'êtes pas à la recherche d'une solution Excel, vous devez supprimer la balise Excel. –