我有以下表结构
AccountID Property Value
123456 Status Active
123456 City Los Angeles
123456 RegistrationDate 2018-05-11 11:30:14.000
543210 Status Active
543210 City Las Vegas
543210 RegistrationDate 2018-05-11 11:13:14.000
888888 Status Inactive
888888 City Toronto
888888 RegistrationDate 2015-05-12 11:13:14.000
我希望能够选择 Property == Status 和 Value == Active And Property == RegistrationDate 和 Value == 2018-05-11 11:30:14.000 的所有行
我想我需要做某种 GROUP BY 然后选择那个聚合但我无法理解它(我的 sql 真的生锈了)。
我想要上述“查询”的以下输出
AccountID Status RegistrationDate
123456 Active 2018-05-11 11:30:14.000
543210 Active 2018-05-11 11:30:14.000
如果所有的列都存在于同一行,我会写这样的:
SELECT AccountID FROM Property
WHERE Status = 'Active'
AND RegistrationDate = '2018-05-11 11:30:14.000'
该设计模式称为 EAV(实体属性值)。这种设计通常需要一个
GROUP BY
或多个连接的查询:另一种表达方式是使用
PIVOT
将 EAV 结构转换为表格形式。鉴于:一个示例查询是:
结果:
db<>在这里摆弄