加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

什么SQL查询或视图将显示“动态列”

发布时间:2021-04-03 05:08:57 所属栏目: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

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读