获取具有1个id和多个事务id的数据employee表

时间:2015-10-17 09:35:36

标签: mysql sql sql-server transactions

这里在交易表中一个员工有多个交易。我想要1个特定员工的所有交易。但是员工ID应该在列中打印一次。格式是

1.其中一名员工有多个交易ID .id应显示1次并显示所有交易

期望的结果:员工详细信息应显示在一行中,但事务ID显示在多行

错误ID重复ID:

image of the results

复制评论:

select 
  b.TransactionId,
  a.Name
from 
  TransactionRecharge b 
  left JOIN Customer a on a.Id=b.CustomerId 
where 
  b.CustomerId=101282

1 个答案:

答案 0 :(得分:0)

这不是一个良好做法,我很确定" 我会因为帮助你而得到负面评价",无论如何我只是按照你的要求做了。

  

使用ROW_NUMBER查询下方将帮助您准确了解所需内容。

CREATE TABLE #customer(Id INT PRIMARY KEY,Name VARCHAR(255))
CREATE TABLE #TransactionRecharge(TransactionId VARCHAR(255),CustomerId INT FOREIGN KEY REFERENCES #customer(id))

INSERT INTO #customer
VALUES (1,'Raj'),(2,'Bala'),(3,'Chandra')

INSERT INTO #TransactionRecharge
VALUES ('reansaction1',1),('reansaction2',1),
       ('reansaction3',1),('reansaction4',1),
       ('reansaction5',1),('reansaction6',1),
       ('reansaction7',1),('reansaction8',2)

SELECT  
    CASE 
        WHEN ROW_NUMBER() OVER ( PARTITION BY a.id ORDER BY b.TransactionId,a.Id) = '1' THEN CONVERT(VARCHAR,a.Id)
        ELSE ''
    END AS Customer,
    CASE
        WHEN ROW_NUMBER() OVER ( PARTITION BY a.id ORDER BY b.TransactionId,a.Id) = '1' THEN Name
        ELSE ''
    END AS Name,
    b.TransactionId  
FROM
    #TransactionRecharge b
LEFT JOIN 
    #customer a ON a.Id = b.CustomerId
WHERE 1 = 1
--AND   b.CustomerId = 1
DROP TABLE #customer
DROP TABLE #TransactionRecharge