1

データ テーブルの構造は次のとおりです:
id1、id2、id3、id4、... (その他のフィールド)。
要約クエリを作成して、すべての列で ID 値が何回使用されているかを調べたいと考えています。

データ
1,2,3,4,2008
2,3,5,1,2008
1,3,2,5,2007
1,2,3,6,2007
3,1,2,5,2007

値 1 の場合、結果は
1,0,0,1,2008
2,1,0,0,2007になります。

1 つのクエリでこれを実現する方法 (MySQL 内)。

4

4 に答える 4

1

特性関数またはデルタ関数を使用します。

DECLARE @look_for AS int
SET @look_for = 1

SELECT SUM(CASE WHEN id1 = @look_for THEN 1 ELSE 0 END) AS id1_count
    ,SUM(CASE WHEN id2 = @look_for THEN 1 ELSE 0 END) AS id2_count
    ,SUM(CASE WHEN id3 = @look_for THEN 1 ELSE 0 END) AS id3_count
    ,SUM(CASE WHEN id4 = @look_for THEN 1 ELSE 0 END) AS id4_count
FROM tbl

テーブルと個別の ID 値に基づいて、これをコード生成する方法があります (ANSI ではない SQL Server で PIVOT と UNPIVOT を使用する手法でもあります)。

于 2008-12-09T19:43:30.300 に答える
1

これが最良の解決策のようです(Wikiから):

select years,
sum(1*(1-abs(sign(id1-56)))) as id1,
sum(1*(1-abs(sign(id2-56)))) as id2,
sum(1*(1-abs(sign(id3-56)))) as id3,
sum(1*(1-abs(sign(id4-56)))) as id4,
from mytable
group by years
于 2008-12-09T20:22:42.483 に答える
0

選択する

(id1 = @param の t1 から count(id1) を選択) を id1 として、

(id2 として t2 から count(id2) を選択します。ここで、id2 = @param)

于 2008-12-09T19:47:47.200 に答える
-1

X が探している id 値である場合、次のようにします。

select (select count(*) where id1 = X) as countid1 ... etc
于 2008-12-09T19:43:31.593 に答える