【发布时间】:2014-07-02 15:10:18
【问题描述】:
我有一张桌子 (finances_history)
它只有一张表,但为了向您展示内容,我将其分成 2 个块,如下所示:
此表上有不同的用户,但它记录了一年中不同月份的信息(在这种情况下只有两个月,一月 - 201401 和二月 - 201402)。
同样,同一个用户可以有两种不同的账单要支付(在这种情况下只有两种不同的类型,能源和租金),但如果用户有其中一种账单要支付(至少在一个月内,或两者),他不会有另一张账单(另一张账单上的值在两个月都为 0)......或者我可以让两个账单的用户在两个月都价值 0。
我只需要“选择”至少有一张账单的价值不同于 0 的用户(用户 ID)(考虑到 4 行,两个月)并且账单的价值在哪里(不是 0)两个月都一样。
所以,我正在寻找的是一个“SELECT”,它可以在上面的示例中为我提供用户 u01 和 u04(唯一符合标准的用户,至少一张价值不同于 0 的账单)至少其中一个月且这些值相等)。
用户 u01 被选中,因为在 201401 和 201402 月份的帐单租金值相同。
未选择用户 u02,因为 201401 和 201402 月份的账单租金值不同。
用户 u03 未被选中,因为在 201401 和 201402 月份的账单能量值不同。
用户 u04 被选中,因为在 201401 和 201402 月份的账单能量值相同。
未选择用户 u05,因为在 201401 和 201402 月份的账单能量值不同。
用户 u06 未被选中,因为在 201401 和 201402 月份的账单(能源和租金)均为 0。
我希望有人可以帮助我。
Ps.:它是一个 MS SQL Server。
谢谢。
【问题讨论】:
-
你有没有尝试过?
-
是的,但是我对 sql 还是很陌生,而且我还没有到达那里(这只是查询的一部分,我也在使用 CASE 来得到每个只有一行的结果用户,有rent_201401、rent_201402、energy_201401、energy_201402等列(每个都带来相应的“价值”)......你有什么可以解决这个问题的代码想法吗?
-
显示一些不起作用的东西总比什么都不显示要好,是的,我有一些想法,但他们使用
OVER子句,你使用的 SQLServer 是 2005 还是更好?跨度> -
它是:“Microsoft SQL Server 2000 - 8.00.2066”
-
我的回答应该和那个兼容,你试过了吗?
标签: sql sql-server sql-server-2000