J'ai 400 colonnes et des en-têtes de rangées sur ma table. Vous pouvez imaginer cela comme une matrice avec des valeurs vierges. Besoin d'attribuer une valeur dans laquelle les en-têtes de colonne et de rangées sont identiques. Comme la colonne A à A à A puis affecter une valeur 6 A à B attribue une valeur 10. p>
exemple p>
p>
Quelqu'un peut-il m'aider à obtenir cette sortie? p>
SQL répond grandement apprécié si les fonctions d'Excel ne fonctionneront pas également. P>
3 Réponses :
Si vous souhaitez avoir une valeur, dites 6 (comme votre exemple) qui apparaît lorsque les noms de colonne et de ligne sont identiques et ont une valeur différente (à nouveau de votre exemple, 10), vous pouvez faire quelque chose Comme ceci:
Assurez-vous que les noms de colonne sont dans la ligne 1 et que les noms de lignes sont dans la colonne A (ou ajustez ma formule pour correspondre aux en-têtes de votre première cellule) et vous pouvez mettre p>
=IF($A2=B$1, 6, 10)
Oui monsieur, c'est la réponse que je recherche MS Excel. Ça marche. Savez-vous comment écrire cela dans MS SQL? @notamathmajor
Je ne. Je ne sais pas si SQL vous permettra même d'interagir avec le nom littéral nom i> d'un disque ou d'un champ dans une requête.
Je supprimerais le $ code> pour une colonne comme
si (A2 = $ B1; 6; 10) code>
@Sami Si vous supprimez le $ de $ A, la formule ne copie pas correctement.
Ouais, c'est vrai, aussi je ne pense pas que MS Excel utilise , code> (mybe en version française) mais utilisez
; code>. Parce que je suis sûr que je suis sûr en versions anglaise et arabe qu'il utilise
; code>, il devrait donc être
= si ($ A2 = 1 $ B $ 6; 10) code>
Excel utilise des séparateurs de paramètres code>, code>, @sami. Tout comme T-SQL.
@Larnu C'est parce que les paramètres régionaux, voir Stackoverflow.com/q/17897946/6426692 .
@Sami par défaut pour l'anglais est , code>
OK, c'est codé dur et crée la table, mais:
Profitez: p>
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;
Je suppose que vous avez une colonne (probablement le premier ou la deuxième ou la deuxième) contenant l'appelé "en-tête de rangée" comme des tables SQL ne disposant pas de noms de ligne ou d'en-têtes.
supposant que cette colonne "Row en-cas" soit nommée " Column_a "et la première en-tête est par exemple" Header_A "puis une requête similaire à celle-ci doit suffire: p> Ceci peut ne pas être la meilleure solution à votre question. Si vous êtes capable de clarifier ce que l'on entend par l'en-tête de la rangée peut-être une meilleure solution peut être suggéré. p> p>
Comment une ligne a-t-elle une valeur de chaîne?
Bienvenue à cela. Votre formatage rend cela impossible à comprendre.
400 colonnes et 400 rangées? Qu'est-ce que les valeurs d'index sont vides et que vous devez attribuer une valeur i> moyenne ?? Maintenant d'où avez-vous compris 6 et 10?
Bonjour et bienvenue à. Comme indiqué que cette question n'a aucun sens. Tout n'est pas perdu cependant, vous pouvez améliorer cela. ici A> est un endroit idéal pour commencer.
C'est tellement si une base de données relationnelle doit être utilisée.