【问题标题】:fetch data employee table with 1 id and multiple transaction id获取具有 1 个 id 和多个事务 id 的数据员工表
【发布时间】:2015-10-17 09:35:36
【问题描述】:

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

1.这里一名员工有多个交易id。id应该显示1次并显示所有交易

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

错误 id 重复 id:

从 cmets 复制:

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

【问题讨论】:

  • 能否请您显示您自己尝试过的查询
  • select b.TransactionId ,a.Name from TransactionRecharge b left JOIN Customer a on a.Id=b.CustomerId where b.CustomerId=101282
  • select b.TransactionId ,a.Name from TransactionRecharge b left JOIN Customer a on a.Id=b.CustomerId where b.CustomerId=101282
  • 这里多次打印姓名。我希望姓名应该只打印一次并且所有交易 ID 都应该打印
  • 您应该编辑您的问题并停止使用全部大写字母 - 并尝试编写清晰易懂的问题

标签: mysql sql sql-server transactions


【解决方案1】:

这不是一个好的做法,我很确定“我会因为帮助你而得到负分”,无论如何我只是按照你的要求做了.

使用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

【讨论】:

  • 嗨 Ragul。是的,有两个表 1 是客户表,第二个是交易表。1 客户可以有多个交易。所以我希望名称应该打印 1 次并且所有交易都应该打印。
  • @radhasingh 更新了我的答案,请检查我。
  • 谢谢 Ragul。它工作正常。它正在按照我的意愿给出结果
  • @radhasingh 欢迎您,添加我的答案作为解决方案!
猜你喜欢
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 2015-04-28
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
  • 2023-01-22
相关资源
最近更新 更多