0

ホントに君達を響板に使ってるんだけど、僕の状況はこうだ

一部の従業員番号に文字が含まれている従業員番号 (Num フィールド) に基づいて、従業員テーブルの正確な数を作成する方法を見つけようとしています。

詳細:約2年前に合併した4社。本社は常に従業員番号に純粋な数字を使用してきました。最初の子会社は文字と数字を使用していましたが、現在はすべて数字に切り替えていますが、古い従業員の記録にはまだ文字があります。(他の子会社も同じ表にありますが、このレポートの目的上、それらは重要ではありません)

00000 から 55555 までのすべての従業員レコードは、メインの会社であり、55556 から 88888 の最初のサブ会社です。また、文字が含まれる従業員番号も、最初の子会社の一部です。

数字の範囲だけのケース ステートメントを作成する方法は知っていますが、従業員番号の文字の部分にうんざりしています。

2 つの会社の正確な従業員数を計算する方法がわかりません。存在する人たちと一緒に

4

3 に答える 3

0

このようなものはうまくいくはずです(あなたの状況に対する私の理解が正しければ):

SELECT
    SUM( IsFirstSubCompany ) FirstSubCompanyEmployeeCount
    , SUM( IsMainCompany ) MainCompanyEmployeeCount
FROM
    (
        SELECT
            IsFirstSubCompany = CASE 
                WHEN u.Num LIKE '%[a-z]%' OR ( 1 = ISNUMERIC( u.Num ) AND CONVERT( INT, u.Num ) BETWEEN 55556 AND 88888 ) THEN 1 ELSE 0
            END,
            IsMainCompany = CASE
                WHEN 1 = ISNUMERIC( u.Num ) AND CONVERT( int, u.Num ) BETWEEN 00000 and 55555 THEN 1 ELSE 0
            END
        FROM
            UserTable u    
    ) q
于 2013-03-27T15:30:20.700 に答える
0

SQL Server を使用している場合 (投稿で RDBMS について言及していない場合)、次を使用して探しているものを実現できます。

SELECT  Company,
        COUNT(*) AS NoOfEmployees
FROM
    (
        SELECT  CASE ISNUMERIC(EmployeeNo)
                    WHEN 1 THEN
                        CASE 
                            WHEN (EmployeeNo < 55556) THEN 'Main Company'
                            ELSE 'First Sub Company'
                        END
                    ELSE 'First Sub Company'
                END AS Company
          FROM  [table]
    ) a
GROUP BY Company

EmployeeNo従業員番号列の実際の名前とtableテーブルの名前に置き換えることを忘れないでください。

これにより、Company 列 (First Sub Company または Main Company) とそれに続くそれぞれに属する従業員数を含むテーブルが出力されます。

于 2013-03-27T15:30:45.667 に答える
0

SQLServerを想定して、試してください:

with cte as
(select
 case when convert(numeric,
                   case isnumeric(employee_no) when 1 then employee_no else '99999' end)
           between 0 and 55555 then 'Main' else 'Sub' end co
 from employee)
select co, count(*) from cte group by co

(SQLFiddleはこちら)

于 2013-03-27T15:34:59.150 に答える