在SQL Server 2012中,行标题和列标题匹配时,如何分配值?

在SQL Server 2012中,行标题和列标题匹配时,如何分配值?,sql,sql-server,excel,Sql,Sql Server,Excel,我的表上有400个列和行标题。您可以将其想象为一个具有空白值的矩阵。需要指定一个列标题和行标题相同的值。像A列一样,给A分配一个值6,给B分配一个值10 范例 有人能帮我得到这个输出吗 SQL答案非常感谢,如果不是Excel函数也可以使用。如果您希望有一个值,请说6类似于列和行名称相同时出现的示例,并再次具有不同的值。与您的示例10相比,您可以这样做: 确保列名在第1行,行名在A列,或者调整我的公式以匹配第一个单元格的标题,然后可以将 =IF($A2=B$1, 6, 10) 在单元格B2中,然

我的表上有400个列和行标题。您可以将其想象为一个具有空白值的矩阵。需要指定一个列标题和行标题相同的值。像A列一样,给A分配一个值6,给B分配一个值10

范例

有人能帮我得到这个输出吗


SQL答案非常感谢,如果不是Excel函数也可以使用。

如果您希望有一个值,请说6类似于列和行名称相同时出现的示例,并再次具有不同的值。与您的示例10相比,您可以这样做:

确保列名在第1行,行名在A列,或者调整我的公式以匹配第一个单元格的标题,然后可以将

=IF($A2=B$1, 6, 10)

在单元格B2中,然后沿上下方向拖动。让我知道这是否有帮助!我可能没有正确理解这个问题。

好的,这是硬编码的,并创建了表,但是:

它能满足你的需要吗?对 效率高吗?哦,不。 它能伸缩吗?不,但是你可以很容易地改变它。 您真的应该让您的RDBMS这样做吗?绝对不是。 享受:

DECLARE @SQL nvarchar(MAX);

WITH N AS (
    SELECT N
    FROM (VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL)) N(N)),
Tally AS (
    SELECT TOP 400
           ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS I
    FROM N N1
         CROSS JOIN N N2
         CROSS JOIN N N3)
SELECT @SQL = N'CREATE TABLE dbo.InsaneTable (' +
              STUFF((SELECT N',' + NCHAR(10) +
                            N'                              ' + QUOTENAME(CONCAT('Column',I)) + N' int DEFAULT 10'
                     FROM Tally
                     FOR XML PATH(N'')),1,32,N'') + ');';         
SELECT @SQL; --Your debugging friend. Not PRINT as we are way over 4,000 characters
EXEC sp_executesql @SQL;
GO
DECLARE @SQL nvarchar(MAX);

WITH N AS (
    SELECT N
    FROM (VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL)) N(N)),
Tally AS (
    SELECT TOP 400
           ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS I
    FROM N N1
         CROSS JOIN N N2
         CROSS JOIN N N3)
SELECT @SQL = STUFF((SELECT NCHAR(10) + N'INSERT INTO dbo.InsaneTable (' + QUOTENAME(c.[name]) + N') VALUES (6);'
                     FROM Tally Ty
                          JOIN sys.columns c ON c.column_id = Ty.I
                          JOIN sys.tables t ON c.object_id = t.object_id
                     WHERE t.[name] = 'InsaneTable'
                     FOR XML PATH(N'')),1,1,N'');
SELECT @SQL; --Your debugging friend. Not PRINT as we are way over 4,000 characters
EXEC sp_executesql @SQL;
GO

SELECT *
FROM dbo.InsaneTable;

GO
DROP TABLE dbo.InsaneTable;

我假设您有一列,第一列或第二列可能包含所谓的“行标题”,因为sql表没有行名称或标题

假设此“行标题”列命名为column_a,第一个标题例如为sake header_a,则类似于以下内容的查询就足够了:

select  column_a, 
(case when header_a = column_a 
then 6 else header_a end) from table 

这可能不是你问题的最佳解决方案。如果您能够澄清行标题的含义,也许可以提出更好的解决方案

行如何具有字符串值?欢迎使用。您的格式设置使其无法理解。400列和400行?索引值为空且需要指定值意味着什么??现在你从哪里得到了6分和10分?嗨,欢迎来到SO。正如所贴的,这个问题没有任何意义。所有的都不会丢失,但是,您可以改进这一点。是一个很好的起点。这不是关系数据库应该用来做的。是的,先生,这就是我要找的MS Excel的答案。它起作用了。你知道如何用MS SQL写这个吗@我不知道。我不确定SQL是否允许您在查询中与记录或字段的文字名称交互;6.10@Sami如果你从$A中删除$A,那么公式将无法正确复制。是的,这是真的,我也不认为MS Excel使用mybe法语版本,而是使用;相反因为我确信它使用的是英语和阿拉伯语版本;,所以它应该是=如果$A2=B$1;6.10