【问题标题】:SQL Inner join show numeric value onceSQL 内连接显示一次数值
【发布时间】:2015-11-10 15:51:31
【问题描述】:

我知道我的问题不是很合乎逻辑,但我有以下挑战:

HeadTab (Uniq_Id  N(10)
         Name   C(30)
         Tax N(18,2))

TrsTab (Uniq_Id N(10) 
        MonthlyDesc C(20)
        Amount N(18,2))

我想要的是下面select * from headtab inner join Trstab on uniq_id = Uniq_id

问题是我希望每个名称只查看一次税务字段,其他相关的应该是 0...(尽管我在详细信息选项卡中有很多行)。

感谢您的帮助

【问题讨论】:

  • 有很多方法可以做到这一点。顶部、不同、最大/最小/其他聚合。从您发布的内容来看,实际上不可能提供更多帮助。
  • 您为什么不想看到每一行的税值?你按什么顺序来知道每个名称的第一行是哪一行?
  • 根据名称查看相同税务字段的一种方法是使用子查询。

标签: sql-server inner-join unique


【解决方案1】:

如果您给查询一个行号以确定每个名称的第一行,您可以使用 case 语句来选择您想要的 Tax 值。

SELECT
    ht.Uniq_ID,
    ht.NAME,
    (CASE WHEN ROW_NUMBER() OVER (PARTITION BY ht.NAME ORDER BY ht.Uniq_ID) = 1 THEN ht.Tax ELSE 0 END)  Tax,
    tt.*
FROM
    headtab ht
    INNER JOIN Trstab tt ON ht.uniq_id = tt.Uniq_id

【讨论】:

    猜你喜欢
    • 2016-09-27
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    相关资源
    最近更新 更多