かなり大きな情報テーブルがあり、いくつかの異なる部門ごとに異なる方法でフィルタリングする必要があります。UNION できるように、同じ数の列を返す以下のクエリを作成しました。重複する行が返されないようにしたいので、UNION を使用しましたが、「Msg 8120, Level 16, State 1, Line 53 Column 'ACT_DW.dbo.INV-ACT.DNUM' is invalid」というエラーが表示され続けます集計関数にも GROUP BY 句にも含まれていないため、選択リストに含まれていません。」
ここで問題を見た人はいますか?私が取得しようとしているのは、可能であればワークグループごとに Deskname フィールドでグループ化されたすべてのレコードの 1 つの大きなテーブルです。
declare @InventoryAsOfEOD date,
@Start date,
@End date
SET @Start = CAST(DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()),0) AS DATE)
SET @End = CAST(DATEADD(DAY, -(DAY(DATEADD(MONTH, 1, GETDATE()))), DATEADD(MONTH, 1, GETDATE())) as DATE)
IF
DATENAME(DW, GETDATE()) = 'Monday'
BEGIN
Set @InventoryAsOfEOD = CAST(DATEADD(D, -3, GETDATE())AS DATE)
END
ELSE
Set @InventoryAsOfEOD = CAST(DATEADD(D, -1, GETDATE()) AS DATE)
print @inventoryasofeod
print @start
print @end
SELECT
DNUM,
SSN,
DTRFIRSTNAME,
DTRLASTNAME,
ASSIGNDATE,
[DESK],
Deskname,
PYMTAMT1,
DueDate,
PnI,
PIBALATSETUP,
Ttl_Balance,
pmgroup,
PROGTYPE,
office,
client,
batch,
placetype,
pymtdt1,
Ttl_Starts
FROM
(SELECT
DNUM,
SSN,
DTRFIRSTNAME,
DTRLASTNAME,
ASSIGNDATE,
[DESK],
Deskname,
PYMTAMT1,
PROGSTARTDT as DueDate,
sum([Prinbal]+[INTBAL]) as PnI,
PIBALATSETUP,
BALANCE as Ttl_Balance,
pmgroup,
PROGTYPE,
office,
client,
batch,
placetype,
pymtdt1,
COUNT(SSN) as Ttl_Starts
FROM
[ACT_DW].[dbo].[INV-ACT] with(INDEX([IX_INV-ACT_InventoryAsOfEOD]),nolock)
WHERE
InventoryAsOfEOD = @InventoryAsOfEOD AND
BC ='GSL' AND
PROGTYPE not in('PMT PLAN', 'Fallout', 'PIF', 'SIF') AND
PROGTYPE is not null and
PYMTDT1 BETWEEN @Start AND @End
UNION
--Get Oregon Starts
SELECT
DNUM,
SSN,
DTRFIRSTNAME,
DTRLASTNAME,
ASSIGNDATE,
[DESK],
Deskname,
PYMTAMT1,
PROGSTARTDT as DueDate,
sum([Prinbal]+[INTBAL]) as PnI,
PIBALATSETUP,
BALANCE as Ttl_Balance,
pmgroup,
PROGTYPE,
office,
client,
batch,
placetype,
pymtdt1,
COUNT(SSN) as Ttl_Starts
FROM
[ACT_DW].[dbo].[INV-ACT] with(INDEX([IX_INV-ACT_InventoryAsOfEOD]),nolock)
WHERE
InventoryAsOfEOD = @InventoryAsOfEOD and
CLIENT like 'ORDOR%' and
PROGTYPE not in ('Null', 'Fallout') AND
PYMTDT1 BETWEEN @Start AND @End
UNION
--Get Perkins Starts
SELECT
DNUM,
SSN,
DTRFIRSTNAME,
DTRLASTNAME,
ASSIGNDATE,
[DESK],
Deskname,
PYMTAMT1,
PROGSTARTDT as DueDate,
sum([Prinbal]+[INTBAL]) as PnI,
PIBALATSETUP,
BALANCE as Ttl_Balance,
pmgroup,
PROGTYPE,
office,
client,
batch,
placetype,
pymtdt1,
COUNT(SSN) as Ttl_Starts
FROM
[ACT_DW].[dbo].[INV-ACT] with(INDEX([IX_INV-ACT_InventoryAsOfEOD]),nolock)
WHERE
InventoryAsOfEOD = @InventoryAsOfEOD and
BC in ('PE1', 'PE2', 'PE3', 'NU1', 'NU2', 'NDS') and
PROGTYPE not in ('Null', 'Fallout') AND
PYMTDT1 BETWEEN @Start AND @End
UNION
--Get starts for Tuition
SELECT
DNUM,
SSN,
DTRFIRSTNAME,
DTRLASTNAME,
ASSIGNDATE,
[DESK],
Deskname,
PYMTAMT1,
PROGSTARTDT as DueDate,
sum([Prinbal]+[INTBAL]) as PnI,
PIBALATSETUP,
BALANCE as Ttl_Balance,
pmgroup,
PROGTYPE,
office,
client,
batch,
placetype,
pymtdt1,
COUNT(SSN) as Ttl_Starts
FROM
[ACT_DW].[dbo].[INV-ACT] with(INDEX([IX_INV-ACT_InventoryAsOfEOD]),nolock)
WHERE
InventoryAsOfEOD = @InventoryAsOfEOD and
BC in ('AR1', 'AR2', 'IN1', 'IN2', 'IN3', 'TU1', 'TU2', 'TU3') and
PROGTYPE not in ('Null', 'Fallout') AND
PYMTDT1 BETWEEN @Start AND @End
UNION
--Get Starts for Chase
SELECT
DNUM,
SSN,
DTRFIRSTNAME,
DTRLASTNAME,
ASSIGNDATE,
[DESK],
Deskname,
PYMTAMT1,
PROGSTARTDT as DueDate,
sum([Prinbal]+[INTBAL]) as PnI,
PIBALATSETUP,
BALANCE as Ttl_Balance,
pmgroup,
PROGTYPE,
office,
client,
batch,
placetype,
pymtdt1,
COUNT(SSN) as Ttl_Starts
FROM
[ACT_DW].[dbo].[INV-ACT] with(INDEX([IX_INV-ACT_InventoryAsOfEOD]),nolock)
WHERE
InventoryAsOfEOD = @InventoryAsOfEOD and
CLIENT like 'AG%' and
PROGTYPE not in ('Null', 'Fallout') AND
PYMTDT1 BETWEEN @Start AND @End)
as StartsTable
GROUP BY
DNUM,
SSN,
DTRFIRSTNAME,
DTRLASTNAME,
ASSIGNDATE,
PYMTAMT1,
DueDate,
PIBALATSETUP,
Ttl_Balance,
PROGTYPE,
DESK,
deskname,
PMGROUP,
OFFICE,
CLIENT,
BATCH,
PLACETYPE,
PYMTDT1
ORDER BY
PMGROUP,
DESK