首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只从一列中选择不同的值

只从一列中选择不同的值
EN

Stack Overflow用户
提问于 2014-03-17 03:41:33
回答 2查看 561关注 0票数 0

我正在显示查询中的三个字段,并希望显示一个不同的banking_no。我仍然想显示其他字段,即使它们是不明确的。请帮帮忙。

代码语言:javascript
复制
SELECT  C.RECEIPT_OFFICE_PREFIX, B.BANKING_NO, B.STATUS_CD
FROM    TControl B, TComponent C
WHERE   C.DEPOSIT_BANK_ACCT = 'xxx-xxxxxx-xxxxx'
AND     B.BANKING_NO = C.BANKING_NO
AND     B.COMPANY_ID = C.COMPANY_ID
AND     B.RECEIPT_OFFICE_PREFIX = C.RECEIPT_OFFICE_PREFIX
AND     B.STATUS_CD != 'C'
ORDER BY B.BANKING_NO

我正在使用Sybase ASE 12.5

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-17 03:45:28

更多最新版本的Sybase支持row_number()。您可以在这样的子查询中使用它:

代码语言:javascript
复制
SELECT RECEIPT_OFFICE_PREFIX, BANKING_NO, STATUS_CD
FROM (SELECT C.RECEIPT_OFFICE_PREFIX, B.BANKING_NO, B.STATUS_CD,
             ROW_NUMBER() OVER (PARTITION BY B.BANKING_NO ORDER BY B.BANKING_NO) as seqnum
      FROM TControl B JOIN
           TComponent C
           ON B.BANKING_NO = C.BANKING_NO AND B.COMPANY_ID = C.COMPANY_ID
      WHERE C.DEPOSIT_BANK_ACCT = 'xxx-xxxxxx-xxxxx' AND     
            B.RECEIPT_OFFICE_PREFIX = C.RECEIPT_OFFICE_PREFIX AND
            B.STATUS_CD != 'C'
    ) BC
WHERE seqnum = 1
ORDER BY BANKING_NO;
票数 0
EN

Stack Overflow用户

发布于 2014-03-17 14:48:31

你想要的东西可能不会被称为“不愉快”。如果其余的数据是相同的,只使用一个不同的就行了。但是,如果数据可能不同,则需要说明数据库应该选择什么结果。第一排?最后一排?

如果你不介意的话就用吧;

代码语言:javascript
复制
SELECT DISTINCT  MAX(C.RECEIPT_OFFICE_PREFIX), B.BANKING_NO, MAX(B.STATUS_CD)
FROM    TControl B, TComponent C
WHERE   C.DEPOSIT_BANK_ACCT = 'xxx-xxxxxx-xxxxx'
AND     B.BANKING_NO = C.BANKING_NO
AND     B.COMPANY_ID = C.COMPANY_ID
AND     B.RECEIPT_OFFICE_PREFIX = C.RECEIPT_OFFICE_PREFIX
AND     B.STATUS_CD != 'C'
GROUP BY B.BANKING_NO

在您需要选择一行使用戈登解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22446548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档