これにぴったりのタイトルを見つけるのは本当に難しいです。
質問は次のとおりです。最大 3 つの値 (1、2、3) を返すフィールドのSELECT
クエリがあります。GROUP BY
これらの値は、2 進数での「1」の位置を表しています。言い換えると:
Query Output | Reult
0,1,2 | 7 (111)
1,2 | 6 (110)
3 | 1 (001)
- | 0 (000)
わかりました、簡単です。しかし、2 つの制約があります。まず、関数/ストア プロシージャではなく、クエリが必要です。次に、結果は数値ではなく文字列 (「010」など) にする必要があります。
整数値の解決策は見つかりましたが、文字列 (varchar) は見つかりませんでした
SELECT COALESCE(sum(power(2, field)), 0) AS test FROM (
SELECT field FROM myTable GROUP BY field) a
念のため、SQL Server 2008 を使用しています。
私もこの解決策を持っていますが、これをより多くの出力に拡張することはできません:
SELECT output =
CASE TEST
WHEN 0 THEN '000'
WHEN 1 THEN '001'
WHEN 2 THEN '010'
WHEN 3 THEN '011'
WHEN 4 THEN '100'
WHEN 5 THEN '101'
WHEN 6 THEN '110'
WHEN 7 THEN '111'
END
FROM(
select COALESCE(sum(power(2, 3 - field)), 0) as test from (
select field from myTable group by field) a) b