sql - SQL 查询连接

标签 sql sql-server t-sql sql-server-2000

我有以下数据集:

ID   PeriodID    Account     Amount  
1    1000        Y0001       100.00  
2    1000        M0001       20.00  
3    1000        Y0002       75.00  
4    1000        M0002       15.00  
5    1000        Y0003       100.00  
6    1000        Y0004       200.00  

我需要编写一个查询,只要存在“Y”帐户而没有“M”帐户,则返回零,例如:

PeriodID    Account     Amount  
1000        Y0001       100.00  
1000        M0001       20.00  
1000        Y0002       75.00  
1000        M0002       15.00  
1000        Y0003       100.00  
1000        Y0003       0.00  
1000        Y0004       200.00 
1000        Y0004       0.00 

有什么建议吗?

最佳答案

也许不是最有效的方法,但这应该可以满足您的需求:

SELECT PeriodID, Account, Amount
FROM myTable

UNION ALL

SELECT PeriodID, Account, 0.00 AS Amount
FROM myTable A
WHERE NOT EXISTS (
    SELECT * FROM myTable B 
    WHERE B.Account = 'M' + SUBSTRING(A.Account, 2, LEN(A.Account) - 1)
)

关于sql - SQL 查询连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9253601/

相关文章:

sql - 带有 contains 方法的可选搜索参数

sql - 如何在Sql Server中通过Exec命令运行两条T-Sql语句?

sql - SQL语句中的标点符号

sql - 硬 tsql 问题 - 有多少行值是按顺序排列的

sql-server - 有没有办法可以缩短存储为字符串的 GUID 的长度,并且仍然有点随机?

sql-server - 使用 STUFF 或 CONCAT 命令组合 T-SQL 中的行

SQL 连接表给出错误结果

SQL Server : How to change name in a view?

sql - 当同一模型上有多个联接时,RailsAdmin 过滤器不起作用

sql - 在 SQL Server 中删除记录后重置标识种子