この特定のテーブルで最も多くのものを含む行を見つける必要があります。 テーブルはそのように見え、私の出力は与えられたテーブルの真上に表示されます。SQL:特定の値の最大値を持つ行を見つける方法
私はまだので、多分解決するのは簡単ですが、私は今のところすべてのソリューションを取得できませんでしたSQLに慣れていませんよ。
特定の値を検索し、見つかった値を合計して、出力を余分な列で指定する必要がありますか?
この特定のテーブルで最も多くのものを含む行を見つける必要があります。 テーブルはそのように見え、私の出力は与えられたテーブルの真上に表示されます。SQL:特定の値の最大値を持つ行を見つける方法
私はまだので、多分解決するのは簡単ですが、私は今のところすべてのソリューションを取得できませんでしたSQLに慣れていませんよ。
特定の値を検索し、見つかった値を合計して、出力を余分な列で指定する必要がありますか?
はかなり基本的なものに見える...これが役に立てば幸い:あなたの列のデータ型を想定し
SELECT X.*,
CASE WHEN X.A=1 THEN 1 ELSE 0 END +
CASE WHEN X.B=1 THEN 1 ELSE 0 END +
CASE WHEN X.C=1 THEN 1 ELSE 0 END +
CASE WHEN X.D=1 THEN 1 ELSE 0 END +
CASE WHEN X.E=1 THEN 1 ELSE 0 END +
CASE WHEN X.F=1 THEN 1 ELSE 0 END AS SUM_ONES
FROM X;
は数値で、あなたはこれを使用することができます。
SELECT
CASE WHEN col1 = 1 THEN '*' ELSE '' END ||
CASE WHEN col2 = 1 THEN '*' ELSE '' END ||
...
AS RowValueSearchString
それからちょうどLEN/CHAR_LENGTH関数を使用しますRowValueSearchStringの上にある文字列の長さを見つけるために(あなたが持っているDBに依存します)。連結された文字列の長さは、行内で探している値の出現回数を示します。
あなたはSQL Serverの2012+ようにしている場合は、CASE
OR IIF
を使用することができます。
CREATE TABLE X (
A INT,
B INT,
C INT,
D INT,
E INT,
F INT
);
INSERT INTO X VALUES
(1, 0, 0, 1, 0, 1),
(2, 0, 1, 2, 1, 0),
(1, 0, 1, 0, 1, 0);
SELECT X.*,
IIF(A = 1, A, 0) +
IIF(B = 1, B, 0) +
IIF(C = 1, C, 0) +
IIF(D = 1, D, 0) +
IIF(E = 1, E, 0) +
IIF(F = 1, F, 0) AS [Σ]
FROM X;
結果:
+---+---+---+---+---+---+---+
| A | B | C | D | E | F | Σ |
+---+---+---+---+---+---+---+
| 1 | 0 | 0 | 1 | 0 | 1 | 3 |
| 2 | 0 | 1 | 2 | 1 | 0 | 2 |
| 1 | 0 | 1 | 0 | 1 | 0 | 3 |
+---+---+---+---+---+---+---+
:)助けるためのおかげで、間違いなく右のトラックに私をもたらしました! –