【问题标题】:SQL Column with Variable Table Value具有可变表值的 SQL 列
【发布时间】:2021-10-04 14:33:05
【问题描述】:

我正在尝试编写一份报告,该报告在报告的 FROM 部分中包含多个具有相似值的子表。许多表将具有空值。报告需要有一个 column1 的值来自第一个表的值不为空,column2 的值来自第二个表的值不为空,依此类推。我考虑过使用 case 语句,但我认为它会重复值或遗漏值。我已经编写了报告,其中表值显示报告中的列:

SELECT DISTINCT 
table.column1,    
table.column2,    
table.column3,     
V1.column1,
V1.column2,
V1.column3,  
V1.column4,    
V1.column5,
  ...repeat for each V2, V3, V4 so on to more than 20
      
FROM table 
LEFT JOIN
(SELECT a.column1, a.column2 , a.column3 , a.column4, b.column1 AS column5  
FROM table_1 as a JOIN table_2 as b ON a.value = b.value WHERE a.value = 'V1') AS V1     
ON table.value = V1.value
...repeat for each V2, V3, V4 so on to more than 20

但这还不够。也不是将值连接到一列中。

作为另一个障碍,这必须通过报表生成器进行处理,因此有字符限制。

非常感谢您的帮助!

【问题讨论】:

    标签: sql reportbuilder


    【解决方案1】:

    您可以使用 ISNULL() 函数。在下面的查询中,ISNULL() 函数检查为单独的 comumn,如果为 NULL,则将其替换为 ''。

    SELECT DISTINCT ISNULL(table.column1,'') + ISNULL(table.column2,'') +...      
    FROM table 
    LEFT JOIN
    (SELECT a.column1, a.column2 , a.column3 , a.column4, b.column1 AS column5  
    FROM table_1 as a JOIN table_2 as b ON a.value = b.value WHERE a.value = 'V1') AS V1     
    ON table.value = V1.value
    ...repeat for each V2, V3, V4 so on to more than 20
    

    我希望这对你有用。

    Obs.:如果 '+' 不起作用,请使用 ' || ' 或

    CONCAT (ISNULL(table.column1,''), ISNULL(table.column2,'') …ISNULL(table.columnN,'') ])

    【讨论】:

    • 我希望这已经足够了......但我被明确告知不能将数据连接到一列中。
    • 我考虑过定义每一列,如下所示: delcare '@column varchar(100) '@column2 varchar(100) select '@column=CASE WHEN THEN END, '@column2= case当 '@column THEN END 我觉得这不是很清楚......但由于我的字符长度问题,我认为这不会起作用
    猜你喜欢
    • 2011-08-03
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多