sql-server - 如屏幕截图所示取消数据透视表
问题描述
我有这个数据透视表
Particular_LL Dr_LL Cr_LL Particular_CLL Dr_CLL Cr_CLL
------------------------------------------------------------------------------
Loan 3000000.00 3000000.00 Bank A/C OverDraft 100000.00 100000.00
我尝试使用此查询来取消透视表,但没有得到正确的输出:
SELECT
particular,
debit,
credit
FROM
dbo.Test1
UNPIVOT
(particular
FOR col1 IN ([Particular_LL], [Particular_CLL])) u
UNPIVOT
(debit
FOR col2 IN (Dr_LL, Dr_CLL)) u
UNPIVOT
(credit
FOR col3 IN (Cr_LL, Cr_CLL)) u
WHERE
right(col1, 2) = right(col2, 2)
AND right(col1, 2) = right(col3, 2)
我得到这个结果:
particular debit credit
----------------------------------------------
Loan 3000000.00 3000000.00
Loan 3000000.00 100000.00
Loan 100000.00 3000000.00
Loan 100000.00 100000.00
Bank A/C OverDraft 3000000.00 3000000.00
Bank A/C OverDraft 3000000.00 100000.00
Bank A/C OverDraft 100000.00 3000000.00
Bank A/C OverDraft 100000.00 100000.00
我需要这个输出
particular debit credit
-------------------------------------------
Loan 3000000.00 3000000.00
Bank A/C OverDraft 100000.00 100000.00
解决方案
你可以使用这个。
SELECT
particular,
debit,
credit
FROM
dbo.Test1
UNPIVOT
(particular
FOR col1 IN ([Particular_LL], [Particular_CLL])) u
UNPIVOT
(debit
FOR col2 IN (Dr_LL, Dr_CLL)) u
UNPIVOT
(credit
FOR col3 IN (Cr_LL, Cr_CLL)) u
WHERE
REPLACE(col1, 'Particular_', '') = REPLACE(col2, 'Dr_', '')
AND REPLACE(col1, 'Particular_', '') = REPLACE(col3, 'Cr_', '')
推荐阅读
- php - 需要自定义 WordPress 表单来发送电子邮件正文中的所有字段
- c# - 获取任何 AAD 用户的令牌
- sql-server - IBM DB2 到 SQL Server
- html - HTML 元刷新不会重定向到目标页面
- reactjs - 将 API 中间件与 Redux-Thunk 集成
- javascript - 等待 API 结果以 Javascript 的形式返回
- visual-studio - 如何在本地验证 Coverity C++ 问题是否已修复
- javascript - 向不同数据库发出多个请求失败或成功
- c++ - 找不到 print() 的定义
- sql - 需要根据 SSIS 中的某些条件过滤 excel 行