什么SQL查询或视图将显示“动态列”
发布时间:2021-04-03 05:45:33 所属栏目:MsSql教程 来源:网络整理
导读:我有一个数据表,我允许人们将元数据添加到该表. 我给他们一个接口,允许他们对待它,就好像他们正在将数据存储在表中添加额外的列,但我实际上是将数据存储在另一个表中. Data Table DataID DataMeta Table DataID MetaName MetaData 因此,如果他们想要一个存储
|
我有一个数据表,我允许人们将元数据添加到该表. 我给他们一个接口,允许他们对待它,就好像他们正在将数据存储在表中添加额外的列,但我实际上是将数据存储在另一个表中. Data Table DataID Data Meta Table DataID MetaName MetaData 因此,如果他们想要一个存储数据,日期和名称的表,那么我将拥有数据表中的数据,以及元数据中的“Date”,以及MetaData中的日期,以及元表中带有“名称”的元表和元数据中的名称. 我现在需要一个查询来获取这些表中的信息,并将其呈现为来自单个表,其中包含两个附加列“Data”和“Name”,因此对于客户来说,它看起来就像是一个包含自定义列的表: MyTable Data Date Name 或者,换句话说,我该如何离开这里: Data Table DataID Data 1 Testing! 2 Hello,World! Meta Table DataID MetaName MetaData 1 Date 20081020 1 Name adavis 2 Date 20081019 2 Name mdavis 到这里: MyTable Data Date Name Testing! 20081020 adavis Hello,World! 20081019 mdavis 多年前,当我使用PHP在MySQL中执行此操作时,我做了两个查询,第一个获取额外的元数据,第二个将它们连接在一起.我希望现代数据库有替代方法来解决这个问题. 与this question的选项3相关. -亚当 解决方法您想要在MyTable中调整每个名称 – 值对行…试试这个sql:DECLARE @Data TABLE (
DataID INT IDENTITY(1,1) PRIMARY KEY,Data VARCHAR(MAX)
)
DECLARE @Meta TABLE (
DataID INT,MetaName VARCHAR(MAX),MetaData VARCHAR(MAX)
)
INSERT INTO @Data
SELECT 'Data'
INSERT INTO @Meta
SELECT 1,'Date',CAST(GetDate() as VARCHAR(20))
UNION
SELECT 1,'Name','Joe Test'
SELECT * FROM @Data
SELECT * FROM @Meta
SELECT
D.DataID,D.Data,MAX(CASE MetaName WHEN 'Date' THEN MetaData ELSE NULL END) as Date,MAX(CASE MetaName WHEN 'Name' THEN MetaData ELSE NULL END) as Name
FROM
@Meta M
JOIN @Data D ON M.DataID = D.DataID
GROUP BY
D.DataID,D.Data (编辑:天瑞地安资讯网_瑞安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server-2008 – 是否可以在SQL Server 2008中选择特定的
- sql server怎样写查询语句?聊聊查询性能问题
- .net – 删除LINQ to SQL记录而不先加载它
- 在Sql Server中,如何将二进制字符串转换为二进制?
- sql – oracle中Like vs Contains()之间的搜索条件差异
- 命令行 – 学习SQL艰难的方法 – 在SQL Lite 3中使用.db创建
- .net – EF Code First从IQueryable中删除批次?
- sql – 如何在单词中显示数字值
- sql-server – 我有关于死锁的数据,但我无法理解它们为什么
- sql-server – 使用SQL将XML结构转置/展平为列
站长推荐
热点阅读

