0

マスターテーブルがある場合は、任意の列の例マスターテーブルの列createdon、modifiedon、name、id

詳細テーブルの作成日、変更日、名前、ID、マスターテーブル ID

現在、毎月マスターに行が自動的に追加され、このマスターの詳細に多くの行が含まれている可能性があるため、あるユーザーが来月を待ちたくない場合、マスターに新しい行を作成し、他の行を作成するプロセスを実行します詳細について。そのため、今月は 2 つのマスターが必要です。年と月のみを選択する必要があります。この選択を行うと、最初のマスターの合計詳細が自動的に生成され、2 番目のマスターがユーザー用に生成されます。それが起こってほしくありません、私は1つだけ欲しいです。これが最後か最初かは気にしないので、1つ必要です

それから私の質問は、作成された最後のマスターをどのように選択するのですか?

これは私の現在のクエリですが、これはすべて選択します

SELECT 
    createdby
    , createdbyname
    , createdbyyominame
    , createdon
    , createdonutc
    , createdonbehalfby
    , createdonbehalfbyname
    , createdonbehalfbyyominame
    , importsequencenumber
    , modifiedby
    , modifiedbyname
    , modifiedbyyominame
    , modifiedon
    , modifiedonutc
    , modifiedonbehalfbyname
    , modifiedonbehalfbyyominame
    , modifiedonbehalfby
    , ope_censoid
    , ope_name
    , ope_rutasid
    , ope_rutasidname
    , organizationid
    , organizationidname
    , overriddencreatedon
    , overriddencreatedonutc
    , statecode
    , statecodename
    , StatusCode
    , statuscodename
    , timezoneruleversionnumber
    , utcconversiontimezonecode  
FROM 
    ope_censo  
ORDER BY 
    ope_censoid
    , modifiedon

そして、最後のクエリでこの結果を得ました

createdby                               createdbyname                createdbyyominame           createdon     createdonutc createdonbehalfby   createdonbehalfbyname   createdonbehalfbyyominame   importsequencenumber    modifiedby  modifiedbyname  modifiedbyyominame  modifiedon  modifiedonutc   modifiedonbehalfbyname  modifiedonbehalfbyyominame  modifiedonbehalfby  ope_censoid ope_name    ope_rutasid ope_rutasidname organizationid
71D3CE46-1B71-E011-8C48-005056977FBC    Administrador CRM BBebidas  Administrador CRM BBebidas  2012-02-01 07:03:24.000 NULL    NULL    NULL    NULL    NULL    71D3CE46-1B71-E011-8C48-005056977FBC    Administrador CRM BBebidas  Administrador CRM BBebidas  2012-02-01 07:03:24.000 NULL    NULL    NULL    NULL    581EB2D0-A24C-E111-97AC-005056977FBC    1 - Febrero - 2012  FF7C3DBD-3EBA-E011-8C48-005056977FBC    R 197 AGUA PURIF HOG LOC    F94F39E4-7C6B-E011-8C48-005056977FBC
71D3CE46-1B71-E011-8C48-005056977FBC    Administrador CRM BBebidas  Administrador CRM BBebidas  2012-02-13 15:33:41.000 NULL    NULL    NULL    NULL    NULL    71D3CE46-1B71-E011-8C48-005056977FBC    Administrador CRM BBebidas  Administrador CRM BBebidas  2012-02-13 15:33:41.000 NULL    NULL    NULL    NULL    63FFFF15-5856-E111-97AC-005056977FBC    13 - Febrero - 2012 FF7C3DBD-3EBA-E011-8C48-005056977FBC    R 197 AGUA PURIF HOG LOC    F94F39E4-7C6B-E011-8C48-005056977FBC
71D3CE46-1B71-E011-8C48-005056977FBC    Administrador CRM BBebidas  Administrador CRM BBebidas  2012-02-24 00:29:27.000 NULL    NULL    NULL    NULL    NULL    71D3CE46-1B71-E011-8C48-005056977FBC    Administrador CRM BBebidas  Administrador CRM BBebidas  2012-02-24 00:29:27.000 NULL    NULL    NULL    NULL    3D14A09B-7E5E-E111-97AC-005056977FBC    23 - Febrero - 2012 FF7C3DBD-3EBA-E011-8C48-005056977FBC    R 197 AGUA PURIF HOG LOC    F94F39E4-7C6B-E011-8C48-005056977FBC
71D3CE46-1B71-E011-8C48-005056977FBC    Administrador CRM BBebidas  Administrador CRM BBebidas  2012-02-01 07:02:57.000 NULL    NULL    NULL    NULL    NULL    71D3CE46-1B71-E011-8C48-005056977FBC    Administrador CRM BBebidas  Administrador CRM BBebidas  2012-02-01 07:02:57.000 NULL    NULL    NULL    NULL    7F53A7C4-A24C-E111-97AC-005056977FBC    1 - Febrero - 2012  CC7C3DBD-3EBA-E011-8C48-005056977FBC    R128 AGUA PURIF HOG LOC F94F39E4-7C6B-E011-8C48-005056977FBC
71D3CE46-1B71-E011-8C48-005056977FBC    Administrador CRM BBebidas  Administrador CRM BBebidas  2012-02-13 15:33:28.000 NULL    NULL    NULL    NULL    NULL    71D3CE46-1B71-E011-8C48-005056977FBC    Administrador CRM BBebidas  Administrador CRM BBebidas  2012-02-13 15:33:28.000 NULL    NULL    NULL    NULL    49540510-5856-E111-97AC-005056977FBC    13 - Febrero - 2012 CC7C3DBD-3EBA-E011-8C48-005056977FBC    R128 AGUA PURIF HOG LOC F94F39E4-7C6B-E011-8C48-005056977FBC
71D3CE46-1B71-E011-8C48-005056977FBC    Administrador CRM BBebidas  Administrador CRM BBebidas  2012-02-24 00:37:06.000 NULL    NULL    NULL    NULL    NULL    71D3CE46-1B71-E011-8C48-005056977FBC    Administrador CRM BBebidas  Administrador CRM BBebidas  2012-02-24 00:37:06.000 NULL    NULL    NULL    NULL    753C4BAD-7F5E-E111-97AC-005056977FBC    23 - Febrero - 2012 CC7C3DBD-3EBA-E011-8C48-005056977FBC    R128 AGUA PURIF HOG LOC F94F39E4-7C6B-E011-8C48-005056977FBC
71D3CE46-1B71-E011-8C48-005056977FBC    Administrador CRM BBebidas  Administrador CRM BBebidas  2012-02-01 07:06:55.000 NULL    NULL    NULL    NULL    NULL    71D3CE46-1B71-E011-8C48-005056977FBC    Administrador CRM BBebidas  Administrador CRM BBebidas  2012-02-01 07:06:55.000 NULL    NULL    NULL    NULL    88650A4F-A34C-E111-97AC-005056977FBC    1 - Febrero - 2012  CD7C3DBD-3EBA-E011-8C48-005056977FBC    R129 AGUA PURIF HOG LOC F94F39E4-7C6B-E011-8C48-005056977FBC

「rutaidname」については、「R 197 AGUA PURIF HOG LOC」に 3 回あることがわかります。2012 年 2 月に作成されたことがわかります。この「rutasidname」の最後を選択したかったので、この「rutaidname」がおよび他の月 (もう 1 行) その月の最後が必要なので、「rutaidname」ごとに、すべての月、すべての年で、createdon が最後だった行が必要です。「R 197 AGUA PURIF HOG LOC」の例では、2011 年 2 月の最後、「2011 年 3 月」の最後のマスター、「2011 年 4 月」の lsat マスターが必要です。

4

2 に答える 2

4
;WITH x AS
(
  SELECT d = DATEADD(MONTH, DATEDIFF(MONTH, '19000101', createdon), '19000101'),
    rn = ROW_NUMBER() OVER (PARTITION BY DATEDIFF(MONTH, '19000101', createdon)
      ORDER BY createdon), -- or ORDER BY createdon DESC, or ORDER BY id DESC 
    createdon, modifiedon, name, id, mastertableid
  FROM dbo.mastertable
)
SELECT d,modifiedon,name,id,mastertableid
FROM x
WHERE rn = 1
ORDER BY d;

新しい要件と実際のテーブル/列名:

SELECT 
    createdby, createdbyname
    , createdbyyominame, createdon
    , createdonutc, createdonbehalfby
    , createdonbehalfbyname
    , createdonbehalfbyyominame
    , importsequencenumber
    , modifiedby, modifiedbyname
    , modifiedbyyominame, modifiedon
    , modifiedonutc
    , modifiedonbehalfbyname
    , modifiedonbehalfbyyominame
    , modifiedonbehalfby
    , ope_censoid
    , ope_name
    , ope_rutasid
    , ope_rutasidname
    , organizationid
    , organizationidname
    , overriddencreatedon
    , overriddencreatedonutc
    , statecode
    , statecodename
    , StatusCode
    , statuscodename
    , timezoneruleversionnumber
    , utcconversiontimezonecode  
FROM 
(
  SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY ope_rutasidname, 
       DATEDIFF(MONTH, '19000101', createdon) ORDER BY createdon DESC)
  FROM dbo.ope_censo  
) AS x
WHERE rn = 1
ORDER BY ope_censoid, modifiedon;
于 2012-06-18T17:43:33.183 に答える
0

月/年でグループ化された日付値が必要なだけのように思えますが、MAX以下のテストされていない疑似コード:

SELECT
    MAX(someDate) 
    , CAST(YEAR(someDate) AS VARCHAR(4)) + CAST(MONTH(someDate) AS VARCHAR(2)) AS yearAndMonth
FROM
    someTable
GROUP BY
    CAST(YEAR(someDate) AS VARCHAR(4)) + CAST(MONTH(someDate) AS VARCHAR(2))
于 2012-06-18T17:46:21.480 に答える