• 实现数据行转列(数据库必须最低兼容90以上)


    实现数据行转列(数据库必须最低兼容90以上)

    DECLARE @SQLText NVARCHAR(4000)
    SET @SQLText = ''

    DECLARE @ResultColumn_Char VARCHAR(8000)
    SET @ResultColumn_Char = ''

    DECLARE @ResultColumn TABLE
    (
    SerialNo INT IDENTITY ,
    ResultColumn VARCHAR(255)
    )
    INSERT INTO @ResultColumn
    ( ResultColumn )
    SELECT DISTINCT ParameterName
    FROM dbo.tb_ChargeBalanceDetail
    WHERE OperationID = 'Charge_Clinic'

    DECLARE @iCounter INT
    DECLARE @iCounter_max INT
    SELECT @iCounter = MIN(SerialNo),@iCounter_max = MAX(SerialNo) FROM @ResultColumn
    WHILE @iCounter <= @iCounter_max BEGIN
    SELECT @ResultColumn_Char = @ResultColumn_Char + CASE WHEN RTRIM(@ResultColumn_Char) <> '' THEN + ',' ELSE '' END + '[' + ResultColumn + ']' FROM @ResultColumn WHERE SerialNo = @iCounter
    SET @iCounter = @iCounter + 1
    END

    SET @SQLtext ='
    SELECT *
    FROM
    (SELECT ChargeBillID,ParameterName,ParameterValue
    FROM tb_ChargeBalanceDetail WHERE OperationID = ''Charge_Clinic'') p
    PIVOT
    (
    SUM(p.ParameterValue)
    FOR ParameterName IN
    ( ' + @ResultColumn_Char +
    ') AS pvt
    '

    SELECT @SQLText

    --EXEC (@SQLText)


    数据行合并列

    SELECT HospitalID,DiagnosisName = STUFF((SELECT ',' + DiagnosisName FROM dbo.tb_EMR_TRD_DiagnosticRecordsInFormation WHERE HospitalID = T1.HospitalID FOR XML PATH('')),1,1,'')
    FROM dbo.tb_EMR_TRD_DiagnosticRecordsInFormation AS T1

  • 相关阅读:
    https协议介绍
    最详尽的fidder抓取https请求
    最详尽的datagrip使用
    datagrip安装与破解
    二叉树
    使用nexus搭建maven私库
    markdown利器-小书匠
    java开发-flyway
    .NetCore 入门
    .Net Core 实体生成器
  • 原文地址:https://www.cnblogs.com/tanhu/p/7124650.html
Copyright © 2020-2023  润新知